こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

do - while 文

以下のコードをコンパイル後実行すると、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');
}

投稿日時 - 2006-03-09 00:25:49

QNo.2016513

困ってます

質問者が選んだベストアンサー

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

投稿日時 - 2006-03-09 02:40:10

お礼

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

投稿日時 - 2006-03-09 22:16:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)