0

「プログラミング - C ++を使用した原則と実践」の第4章のドリルに完全に行き詰まっています。質問は:

"(ループのたびに) 2 つの int を読み取り、それらを出力する 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++ のインデックスは から までの範囲0ですn - 1。コードは、vector1[n]ifにアクセスできることを前提としていますvector1.size() == n。また、各反復で 1 つの値のみを読み取ります。ただし、2 つの値を読み取ることはできます。

于 2012-10-19T17:39:43.847 に答える
0

私は同じ演習を行っていますが、この本のgoogleグループは、演習とドリルについて質問するのに最適な場所であることがわかりました。あなたの質問に関連するスレッドは、ここにあります。

お役に立てれば。

于 2012-10-20T14:38:51.730 に答える
0

あなたvector1[numberofentries]がエラーを引き起こしています

ベクトルは0thindex..から始まります。

したがって、あなたが 1 の場合、値はnotnumberofentriesに格納されますvector1[0]vector1[1]

あなたが 2 の場合、値はnotnumberofentriesに格納されますvector1[1]vector1[2]

だからあなたのコードは

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

于 2012-10-19T17:45:05.323 に答える