公式アカウントからの投稿が始まります

以下のコードをコンパイル後実行すると、0~9までの出現回数がわかるのですが、処理を続けますか?と出た後yを入力するともう一度 do 以降を実行するようにしたいのですが、yを入力する前にプログラムが終了してしまいます。何がいけないんでしょうか?

#include <iostream>
using namespace std;

int main (void)
{
int i;
char cont;
char c;
int count[10] = {0};

do{
while (cin.get(c)){
switch (c){
case '0': count[0]++; break;
case '1': count[1]++; break;
case '2': count[2]++; break;
case '3': count[3]++; break;
case '4': count[4]++; break;
case '5': count[5]++; break;
case '6': count[6]++; break;
case '7': count[7]++; break;
case '8': count[8]++; break;
case '9': count[9]++; break;
}
}

for (i =0; i < 10; i++)
cout << i << "の出現回数は" << count[i] << "\n";


cout <<"処理を続けますか?(y/N)";
cin >>cont;

}while (cont == 'y');
}

A 回答 (1件)

>while (cin.get(c)){


のループを終わらせるのに、CTRL+Z とかEOF入力してループを抜けているでしょ?
それで、
入力がEOFになっているので、
入力を再び使う前にこれをクリアしてやらないといけません。
適当なところ(ループからでてから次にcin を使うまで)で
cin.clear();
を入れてやればいいと思います。
    • good
    • 0
この回答へのお礼

望んだ処理が出来ました!!!
ありがとうございました。

お礼日時:2006/03/09 22:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!