No.3ベストアンサー
- 回答日時:
既に回答がありますが、プログラムの「気持ち」は、
・入力された値が不正である間、再入力を求める
・不正な入力に対しては、その旨表示する
ということでしょうから、関数を使って、それぞれを分離すると、見通しが良くなることがあります。
bool isOK(int a)
{
if (a >= 0 && a <= 100)
return true;
else
{
std::cout << "MISS";
return false;
}
}
do{
std::cin >> a;
} while(! isOK(a));
この方法のもうひとつの利点は、「入力が妥当」という判断を将来変更する場合に、柔軟に対応できるということです。
たとえば、
・0 から 100 の値が正常
・3回失敗したら、もしかしたら入力条件を忘れているのかもしれないから、改めて表示
・でも、30回も入力したら、強引に 50にして継続
などということも、main の流れを乱さずに対応可能という点です。
お礼が遅れてすみません。
詳しい回答ありがとうございました。
このアドバイスをもとにまた自分でプログラムを作成していきたいと思います。
本当に詳しく、ありがとうございました。
No.2
- 回答日時:
「if文で戻る」ことは不可能で, 「ほかの何か」が必要.
redo:
cin >> A;
if (A > 100 || A < 0) {
count << "MISS";
goto redo;
}
でもできる.
でも, 変数名が大文字だったりするのは気に入らないし, 比較の順序も気持ち悪い.
お礼が遅れてすみません。
このプログラムは課題の中のif文に疑問をもったのでだいぶてきとうなものにしてしました。お気に召さないのに回答していただきありがとうございます。
比較の順序等また、考え直してみます。
回答ありがとうございました。
No.1
- 回答日時:
いくつか方法はありますが……
endflag = 0;
while(!endflag) {
cin >> A;
if(A > 100 || A < 0){
cout << "MISS";
} else {
endflag = 1;
}
}
while(1) {
cin >> A;
if(A > 100 || A < 0){
cout << "MISS";
} else {
break;
}
}
do {
cin >> A;
if(A > 100 || A < 0){
cout << "MISS";
}
} while(A > 100 || A < 0);
などなど…
ありがとうございます。
今、プログラム書いてて疑問におもったので。
参考にさせていただきます。
また機会があればよろしくお願いします。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) 関数式を教えてください。 AとBのセルがあり、Aのセルに値がある場合はCのセルへ1と表示。 AとBの 5 2022/03/23 14:38
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- TOEFL・TOEIC・英語検定 英語表現教えてください。 i'm sure you are going 【miss】 her a l 2 2022/05/06 15:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
プログラミング初心者です。 Py...
-
コマンドプロンプトからのEOFの...
-
java初心者です。入力されたの...
-
C言語でgetchar();が上手く使え...
-
VisualStudio2019のコードアナ...
-
プログラミングC言語について
-
cout関数を使っているのですが...
-
C言語でつるかめ算をするにはど...
-
switch文 defaultについて
-
gets_sがうまく動かない
-
入力候補を表示させるには・・・?
-
小数か整数かを判定する方法
-
scanf が無視されます
-
WindowsでEOF
-
C言語について
-
至急教えてください!プログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
プログラミングの問題です 「金...
-
Linuxで入力待ちなしkeyread関...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報