OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.227484
  • 閲覧数116
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 22% (6/27)

取り組んでる課題で、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;
}
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

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

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 36% (37/102)

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

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

char input;

cin >> input;

if(input=='y') {
// y と答えたときの処理。
} else if(input=='n') {
// n と答えたときの処理。
} else {
cout << "y か n で答えてください。" << endl;
}
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ