![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
取り組んでる課題で、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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
プログラムの進行が一時ストッ...
-
pythonについてですが、10未満...
-
意味のよく分らないソース
-
C言語(高校1年の内容)について
-
Eclipseコンソール表示を、リセ...
-
double型が正常に認識されてい...
-
Userformの入力順序をタブオー...
-
初心者です。教えてください、...
-
日数を計算する方法
-
for文,scanfについて
-
c言語でひらがなのしりとりをで...
-
Linuxで入力待ちなしkeyread関...
-
プログラムの実行時に'<'でリダ...
-
コマンドプロンプトからのEOFの...
-
"scanf"でエンターで改行させな...
-
C言語でgetchar();が上手く使え...
-
結果が必ずTrueになってしまい...
-
C言語の初歩的な問題です。
-
WindowsでEOF
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
プログラムの実行時に'<'でリダ...
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
scanf が無視されます
-
Excel VBAで、Application.Inpu...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
プログラミングの問題です 「金...
-
小数か整数かを判定する方法
-
ワードで文字を入力する時の変...
-
"scanf"でエンターで改行させな...
-
java初心者です。入力されたの...
-
cout関数を使っているのですが...
-
EDITコントロールで入力できる...
-
batプログラム上で文字列を入力...
-
C言語scanf_sで何故か2回入力に...
-
コマンドプロンプトからのEOFの...
-
C言語でgetchar();が上手く使え...
おすすめ情報