
取り組んでる課題で、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;
}
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 以上ですか?と聞かないように工夫するくらいです。
No.1
- 回答日時:
直接の回答ではありませんが、
相手の数字を当てるのに、最初に数を入力してもらうのは
どうかと思います。
エラー処理等は全くしてないですが、
下のように書けば y/n の入力を受けれると思います。
char input;
cin >> input;
if(input=='y') {
// y と答えたときの処理。
} else if(input=='n') {
// n と答えたときの処理。
} else {
cout << "y か n で答えてください。" << endl;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のプログラミングですが、
-
小数か整数かを判定する方法
-
scanf が無視されます
-
C言語の整数の判別
-
プログラミングの問題で、キー...
-
Userformの入力順序をタブオー...
-
4桁の数字以外を入力したらエラ...
-
Linuxで入力待ちなしkeyread関...
-
入力する数字のサイズ制限について
-
正負を反転させて出力するプロ...
-
Eclipseでコマンドラインを入力...
-
C言語でタイミングを合わせるゲ...
-
Javaについて質問です。 勉強し...
-
C++:cinが上手く使えない
-
ダメだ・・・分からない。while...
-
fgetsとループ処理
-
最早開始時間と最遅完了時刻を...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
strncpyと_tcsncpy_sのヌルの扱...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
コマンドプロンプトからのEOFの...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
cout関数を使っているのですが...
-
プログラミングの問題です 「金...
-
scanf関数について
-
Userformの入力順序をタブオー...
-
C言語でgetchar();が上手く使え...
-
プログラムの実行時に'<'でリダ...
-
C言語初心者です。ファイルの読...
-
scanf が無視されます
-
実行結果の順番がおかしいんで...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報