zaijzhgh 发表于 2006-10-1 22:35

C++容器问题

今晚编了一个小程序,感觉没有什么问题,可是运行后却不出结果。
   题目如下:读一组整数到VECTOR对象,计算并输出每对相邻的元素的和,如果读入的个数为奇数个,则提示用户最后有一个元素没有求和,并输出其值。
我的程序如下:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
                vector<int> ivec;
                int count,sum,Input;//count为记录输入个数,Input为要输入的数
                sum=0;
                count=0;
                cout<<"now input the integers:"<<endl;
                while(cin>>Input)
                        {
                                ivec.push_back(Input);
                                ++count;
                       
                        }
                for(vector<int>::size_type ix=0;ix!=ivec.size();(ix+2))
                        {
                                sum=ivec+ivec;   //相邻的两个数相加并输出
                                cout<<sum<<endl;
                                sum=0;
                        }
                if(count%2)         //确定输入个数是否为奇数个
                        cout<<"the last element doesn't added!"<<endl;
                return 0;

}

powerwind 发表于 2006-10-2 00:17

for(vector<int>::size_type ix=0;ix!=ivec.size(); (ix+2) )

应该是这里错了

zaijzhgh 发表于 2006-10-2 08:04

这里没有问肉吧?现在问题是输入整数后回车应该又结果出来才对,但是我回车后程序只是换行,并没有输出结果。

powerwind 发表于 2006-10-2 11:48

首先, while(cin>>Input) 这种写法,应该输入回车没有结束,而是要 Ctrl+D.
其次,
for(vector<int>::size_type ix=0;ix!=ivec.size(); (ix+2) )
                        {
                              sum=ivec+ivec[ix+1];   //相邻的两个数相加并输出
                              cout<<sum<<endl;
                              sum=0;
                        }


楼主的ix+2应该是想要ix+=2的意思吧?
不过改成 ix+=2,当输入是奇数时,这样也会出错,因为后面的sum=ivec+ivec[ix+1]; 。

只改 ix+2 为 ix+=2 后,我输入两个数测试时,是正确的:
now input the integers:
23
12
30
10
^D //这个就是输入Ctrl+D
35
40
页: [1]
查看完整版本: C++容器问题