读书人

C++ Prime 课后习题3.13

发布时间: 2013-02-19 11:11:40 作者: rapoo

【求助】C++ Prime 课后习题3.13
最近在看C++ Primer,在做习题3.13的时候遇到一个问题,故来求教大神:
C++ Prime 课后习题3.13
答案给出的源代码如下:
#include <iostream>
#include <vector>
using std::vector;
using std::cin;
using std::cout;
using std::endl;

int main()
{
vector<int> ivec;
int ival;

cout << "Enter numbers:" << endl;
while(cin >> ival)
ivec.push_back(ival);

if(ivec.size() == 0){
cout << "No element?!" << endl;
return -1;
}
cout << "Sum of each pair of adjacent elements in the vector:" << endl;
for(vector<int>::size_type ix =0; ix < ivec.size()-1; ix=ix+2){
cout << ivec[ix]+ivec[ix+1] << '\t';
if((ix+2)%6 == 0)
cout << endl;
}
if(ivec.size() % 2 == 1)
cout << endl << "The last element has not been summed"
<< "and its value is "
<< ivec[ivec.size()-1] << endl;
return 0;
}

但是我自己运行之后发现“Sum of each pair of adjacent elements in the vector:”这句话一直出不来,调试了很久也找不出是什么错误,求教大神到底是哪出错了?

[解决办法]
while(cin >> ival)
ivec.push_back(ival);

这个循环必须要等到你输入一个文件结束符才能退出,而你从控制台是无法输入这个符号的,所以就一直循环下去了。
要么你把数字都存到一个文件里,从文件中读
要么你输入前先确定元素的个数n,然后输入n次。

[解决办法]

引用:
while(cin >> ival)
ivec.push_back(ival);

这个循环必须要等到你输入一个文件结束符才能退出,而你从控制台是无法输入这个符号的,所以就一直循环下去了。
要么你把数字都存到一个文件里,从文件中读
要么你输入前先确定元素的个数n,然后输入n次。

可以输入。linux里Ctrl-D。windows里Ctrl-Z加回车。

读书人网 >C++

热点推荐