• ベストアンサー

Yesならこっちへ、NOならあっちへ(c++)

取り組んでる課題で、Yとタイプしたら1のステップにいけて、Nとタイプしたら2のステップに行くというところでわからなくなってしまいました。Userにそういう選択させるのには何をどう書いたらいいのですか? --------------------------------------------------------------------- 問題:1から100までの整数をUserに選ばせ、Userに、「選んだ数字はXX以上ですか?」と質問を繰り返し、最後にUserの選んだ数字を当てるという課題です。(Userはそれに対してYes/Noでしか答えられません。) --------------------------------------------------------------------- int max=100; int min=0; int mid, x; int systemtype=y, sytemtype=n; main(){ while(1){ cout<<"1から100までで好きな数字を選んでね。"; cin>> x; if (n<=0 || n>=100){ break; } if (mid == (max + min)/2){ cout<<"選んだ数字は :" << mid << " より大きい? "<< endl; cout<<" y は YES, n は NO :" << endl; } else if(min == max){ cout<<"その数字は" << x <<endl; break; } else if(min == mid){ mid += ( max - mid)/2; cout<<"あなたの選んだ数は :" << mid <<" より大きい? "<<endl; } else if(max == mid){ mid -= (mid - min)/2; cout<<"あなたの選んだ数は:" << mid << " より大きい? "<< endl; } else cout<<"その数字は :"<< n <<endl; } return 0; }

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

  • ベストアンサー
noname#30727
noname#30727
回答No.2

おそらく入力そのものは、この手の課題としては重要ではないと思うので、例えば、一行単位で入力させて、最初の1文字で判断するなどの簡単な方法でもいいと思います。 char input[256]; int ans; for (ans = 0; ans == 0; ) { cout<<" y は YES, n は NO :" << endl; cin >> input; if (input[0] == 'y') { ans = 1; } else if (input[0] == 'n') { ans = 2; } } cherry_moon さんも書かれていますが、「1から100までの整数をUserに選ばせ」というのは、心の中で選ばせるという意味ですよね? 最初に数を入力させてしまったら、1回目で当たって当然と誰もが思うはずです。 書かれているプログラムを見ると、何度も mid より大きい? という部分がありますが、これは1箇所だけで済むように作れるはずです。あとは、min == 33, max == 34 などのときに、永遠に 33 以上ですか?と聞かないように工夫するくらいです。

その他の回答 (1)

回答No.1

直接の回答ではありませんが、 相手の数字を当てるのに、最初に数を入力してもらうのは どうかと思います。 エラー処理等は全くしてないですが、 下のように書けば y/n の入力を受けれると思います。 char input; cin >> input; if(input=='y') { // y と答えたときの処理。 } else if(input=='n') { // n と答えたときの処理。 } else { cout << "y か n で答えてください。" << endl; }

関連するQ&A