0

我完全被困在“编程 - 使用 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";
}

当然,这最终会崩溃。

我将如何解决此问题以使其正常工作?

(有人有这本书的答案吗?写得真好,但是如果你在自学的话是不可能检查你的答案的。)

4

4 回答 4

2

C++ 中的索引范围从0n - 1. 您的代码假定您可以访问vector1[n]if vector1.size() == n。此外,您在每次迭代中只读取一个值。不过,您可以只读取两个值。

于 2012-10-19T17:39:43.847 回答
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';
}
于 2015-01-14T16:56:32.720 回答
0

vector1[numberofentries]导致错误

一个向量从0th索引开始..

因此,当您numberofentries为 1 时,该值存储在vector1[0]notvector1[1]

当您numberofentries为 2 时,该值存储在vector1[1]notvector1[2]

所以你的代码应该是

cout<<vector1[numberofentries - 2] << vector1[numberofentries-1] << "\n";

于 2012-10-19T17:45:05.323 回答
0

我正在做同样的练习,并发现这本书的 google 小组是询问有关练习和练习的问题的最佳场所,可以在此处找到与您的问题相关的线程。

希望这可以帮助。

于 2012-10-20T14:38:51.730 回答