我完全陷入了“编程 - 使用C ++的原理和实践”第4章的练习。问题是:
“编写一个由while循环组成的程序(每次循环)读入两个整数然后打印它们。当终止'|'时退出程序进入。“
这是我的代码:
{
int entryvariable = 0;
int numberofentries = 0;
vector<int>vector1;
while (cin>>entryvariable)
{
vector1.push_back(entryvariable);
++numberofentries;
if (numberofentries % 2 == 0)
cout<<vector1[numberofentries - 1] << vector1[numberofentries] << "\n";
}
这当然会导致崩溃。
我如何解决这个问题以使其正常工作?
(有没有人有这本书的答案?这篇文章写的很好,但是如果你正在进行自学,就不可能检查你的答案。)
答案 0 :(得分:2)
C ++中的索引范围从0
到n - 1
。您的代码假定您可以vector1[n]
访问vector1.size() == n
。此外,您只在每次迭代中读取一个值。但是,你可以读取两个值。
答案 1 :(得分:1)
int main()
{
vector<int>v;
int a=0;
cin>>a;
int b=0;
while (v.size()<2) // insted of 2 it could be another figure for
// another number of printed figures
{
v.push_back(a);
cin>>b;
a=b;
}
for (int i=0; i<v.size(); ++i)
cout<<v[i]<<'\n';
}
答案 2 :(得分:0)
您的vector1[numberofentries]
导致错误
向量从0th
索引开始..
因此,当您的numberofentries
为1时,该值会存储在vector1[0]
而不是vector1[1]
当您的numberofentries
为2时,该值存储在vector1[1]
而不是vector1[2]
所以你的代码应该是
cout<<vector1[numberofentries - 2] << vector1[numberofentries-1] << "\n";
答案 3 :(得分:0)
我正在进行相同的练习,并且发现该书的谷歌小组是提出有关练习和演习的最佳位置的最佳位置,可以找到与您的问题相关的帖子here。
希望这有帮助。