プロが教えるわが家の防犯対策術!

取り組んでる課題で、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;
}

A 回答 (2件)

おそらく入力そのものは、この手の課題としては重要ではないと思うので、例えば、一行単位で入力させて、最初の1文字で判断するなどの簡単な方法でもいいと思います。



char input[256];
intans;

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 以上ですか?と聞かないように工夫するくらいです。
    • good
    • 0

直接の回答ではありませんが、


相手の数字を当てるのに、最初に数を入力してもらうのは
どうかと思います。

エラー処理等は全くしてないですが、
下のように書けば y/n の入力を受けれると思います。

char input;

cin >> input;

if(input=='y') {
// y と答えたときの処理。
} else if(input=='n') {
// n と答えたときの処理。
} else {
cout << "y か n で答えてください。" << endl;
}
    • good
    • 0

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