鱼C论坛

 找回密码
 立即注册
查看: 3637|回复: 10

C++段错误

[复制链接]
发表于 2013-11-8 09:55:49 | 显示全部楼层 |阅读模式
1鱼币
#include <iostream>
#include <vector>

using namespace std;

int main()
{
        vector<int> ivec = {0,1,2,3,4,5,6,7,8,9};
        int num;
        char c;
        for(auto i = ivec.begin();i != ivec.end();i+=2)
        {
                cout << ivec[*i] + ivec[*i]+1 << endl;
        }
        auto beg = ivec.begin();
        auto end = ivec.end();
        auto mid = ivec.begin() + (end-beg) / 2;
        for(int i = 0;beg != mid;beg++,i++)
        {
                cout << *(beg+=i) + *(end-=(1+i))  << endl;
        }
        return 0;
}
屏幕截图(7).png

屏幕截图(7).png

最佳答案

查看完整内容

题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。 改写你的程序,这次要求先输出第1个和最后1个元素的和, 接着输出第2个和倒数第2个的元素的和,以此类推。 效果截图: 代码:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-8 09:55:50 | 显示全部楼层
本帖最后由 friendan 于 2013-11-11 10:09 编辑

题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
        改写你的程序,这次要求先输出第1个和最后1个元素的和,
        接着输出第2个和倒数第2个的元素的和,以此类推。


效果截图:
1.png

代码:
#include <iostream>
#include <vector>

using namespace std;

int main()
{
        //题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
        //改写你的程序,这次要求先输出第1个和最后1个元素的和,
        //接着输出第2个和倒数第2个的元素的和,以此类推。)
        vector<int> ivec;
                for(int i=0;i<10;i++)
                        ivec.push_back(i);//0~9

                //将每对相邻整数的和输出来
                //0和1相邻,1和2相邻,2和3相邻......
                for(vector<int>::iterator iter=ivec.begin();;)
                {
                        int a=*iter;
                        if(++iter==ivec.end())
                                break;
                        int b=*iter;
                        cout<<a+b<<" ";
                }
                cout<<endl;

                //输出第1个和最后1个元素的和,
           //接着输出第2个和倒数第2个的元素的和,以此类推。
                //0 1 2 3 4 5 6 7 8 9
                vector<int>::iterator iterA=ivec.begin();
                vector<int>::iterator iterB=ivec.end();
                iterB--;
                int count=ivec.size()/2;
                while(count>0)
                {
                        cout<<*iterA+*iterB<<" ";
                        iterA++;
                        iterB--;
                        count--;
                }
                cout<<endl;
        
        return 0;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-8 16:36:26 | 显示全部楼层
LZ啊,首先auto这种类型是C++11里新出现的,我没有学过C++11。。。不过我觉得
for(auto i = ivec.begin();i != ivec.end();i+=2)
         {
                 cout << ivec[*i] + ivec[*i]+1 << endl;
         }
要改为
for(auto i = ivec.begin();i != ivec.end();i+=2)
         {
                 cout<<* i+ *(i+1) << endl;
         }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-8 16:53:25 | 显示全部楼层
{:1_1:}我不看下面 的   LZ你确定 你头文件导对了吗?  
#include <iostream>
#include <vector>

没加 .h
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-8 21:08:27 | 显示全部楼层

题目是这样的(使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写你的程序,这次要求先输出第1个和最后1个元素的和,接着输出第2个和倒数第2个的元素的和,以此类推。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-8 21:10:05 | 显示全部楼层
乱闯 发表于 2013-11-8 16:53
我不看下面 的   LZ你确定 你头文件导对了吗?  
#include
#include

C++11统一不见使用.h后缀,c里面原有的头文件,C++11中去掉.h再在前面加上c表示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-8 21:13:26 | 显示全部楼层
Only_為_の 发表于 2013-11-8 21:08
题目是这样的(使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。改写 ...

以前没学过C++,自己也是刚学。题目要用迭代器,代码被我改的乱七八糟。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-8 22:23:48 | 显示全部楼层
Only_為_の 发表于 2013-11-8 21:10
C++11统一不见使用.h后缀,c里面原有的头文件,C++11中去掉.h再在前面加上c表示

{:1_1:}谢谢 LZ指正  我是做Java的  目前正在学习c/c++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-11 19:48:16 | 显示全部楼层
完全看不懂。来学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-12 08:08:58 | 显示全部楼层
friendan 发表于 2013-11-11 10:08
题目:使用迭代器,读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出来。
        改写你的程序, ...

谢谢帮忙,我在你的代码基础上修改了一下
/*请使用迭代器重做3.3.3节(第94页)的最后一个练习。
 */
#include <iostream>
#include <vector>

using namespace std;

int main()
{
        vector<int> ivec;
        for(int i=0;i<10;i++)
        {
                ivec.push_back(i);
        }
        for(auto it=ivec.begin();it != ivec.end();it++)
        {
                int a = *it;
                int b = *(it+1);
                cout << a+b << " ";
        }
        cout << endl;
        int count = ivec.size()/2;
        for(auto itA=ivec.begin(),itB=ivec.end()-1;count !=0;itA++,itB--)
        {
                cout << *itA + *itB <<" ";
                count--;
        }
        cout << endl;
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-12 08:13:56 | 显示全部楼层
屏幕截图(10).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-23 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表