1

私は C++ を学習して、入力にそれぞれの値が連続して何回出現するかをカウントするプログラムを作成しています。

コードは

#include <iostream>
int main()
{
    // currVal is the number we're counting; we'll read new values into val
    int currVal = 0, val = 0;
    // read first number and ensure that we have data to process
    if (std::cin >> currVal)
    {
        int cnt = 1; // store the count for the current value we're processing
        while (std::cin >> val)
        { // read the remaining numbers
            if (val == currVal) // if the values are the same
                ++cnt; // add 1 to cnt
            else
            { // otherwise, print the count for the previous value
                std::cout << currVal << " occurs " << cnt << " times" << std::endl;
                currVal = val; // remember the new value
                cnt = 1; // reset the counter
            }
        } // while loop ends here
        // remember to print the count for the last value in the file
        std::cout << currVal << " occurs " << cnt << " times" << std::endl;
    } // outermost if statement ends here
    return 0;
}

ただし、最後の数値セットはカウントされません。例: 入力が 5 5 5 3 3 4 4 4 4 の場合、出力は次のようになります。

5 が 5 回発生します。3 が 2 回発生します。

前回のセット結果は「4が4回」。表示されません。

コードの何が問題なのだろうか。

助けてください。

ありがとう。

hc。

4

2 に答える 2

0

(val == currVal) が false の場合にのみ出力を生成するようです。最後の 4 つが入力から読み取られた後にこれが起こると考える理由は何ですか?

于 2013-10-10T01:11:34.287 に答える