- ベストアンサー
”0”入力時、else文の中の”Can not perform by 0”表記を表示させたい。
度々忙しい中失礼します。 C言語超初心者のものです。else文での表示について質問があります。 プログラミング内容 (1)Enter first integer: 17 [好きな数値選択] (2)Enter operator:(*/+-%) [好きな演算子選択] (3)Enter second integer:5 [好きな数値選択] というように数字・標準演算子・数字の順でキーボードから入力し、 (4)17 / 5 = 3 という回答を求めるものです。また、 (5)17 / 0 ”0”をキーボードから入力した時には”Can not divide by 0”という表記をDOS画面?上に表示させたいと思っているのですが、0を入力した後、enterキーを押すと、DOS画面?がフリーズして、「Send Error Report」または「Don't Send」の別表示が出てきてしまいます。 (3)Enter second integer:0以外の値 時にはプログラミングは正常に作用するので、else文に問題があるのは分かっているのですが、どこに問題があるのかが分かりません(カッコ内はnum2=0でもnum2==0でも不可でした)。もしその問題のありかが分かる方がいらっしゃいましたらアドバイスお願いします。 以下がそのプログラミングです。 int main() { int num1, num2, num4, num5, num6; char chr; printf("Enter the first integer: "); scanf("%d",&num1); scanf("%c",&num5); printf("Enter an operator (* / + - %%): "); scanf("%c",&chr); scanf("%c",&num6); printf("Enter the second integer: "); scanf("%d",&num2); if(chr == '/') {num4 = num1 / num2; printf("%d / %d = %d\n", num1, num2, num4); } else(num2=0) ; {printf("Can not perform (divide) by 0\n");} return 0; } また参考になるURLなどありましたら、それもご紹介願います。 大変皆さんお忙しいとは思いますが、出来たらお願いします。 査閲ありがとうございます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1の方の言うとおり、もう少し文法を見直した方がいいでしょう。 でも、やりたいことは判ったので、if文を変更しましょう。 今のまま文法に合わせても、chrが"/"の時は必ず計算してしまいます。 ←ここが重要!! なので、 if(chr == '/'){ if(num2==0){ printf("Can not perform (divide) by 0\n"); }else{ num4 = num1 / num2; printf("%d / %d = %d\n", num1, num2, num4); } } のように、chrが"/"でnum2が"0"の時に「Can not perform (divide) by 0」と表示するように変えてみました。または同時に判定させて if(chr == '/' && num2==0){ printf("Can not perform (divide) by 0\n"); }else{ num4 = num1 / num2; printf("%d / %d = %d\n", num1, num2, num4); } のように変更しましょう。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
とりあえず, 「どのように処理をしていけばいいのか」が理解できていないような気がします. その状態では, いかなる言語を使っても同じように困るでしょう. ちなみに else (num2 = 0); というのは「文法的には」おかしくないです>#1. else のあとに「冗長なかっこを持つ式文」があるだけだから.
お礼
その通りです。厳しい指摘ありがとうございます。 何か参考になるURL等あれば教えて頂けると幸いです。
- koko_u_
- ベストアンサー率18% (459/2509)
> else(num2=0) ; こんな文法ないから。。。 やろうとしていることを『そのまま』書かないように。if 文は if (条件1) { <条件1が成立する場合にしたい処理> } else if (条件2) { <条件1が不成立で条件2が成立する場合にしたい処理> } else { <条件1も条件2も不成立の場合にしたい処理> } でどうぞ。
お礼
適切なアドバイスありがとうございます。 本当にありがとうございました。
お礼
見ず知らずの私に適切なアドバイスありがとうございます。 おかげで自分の考えたとおりにプログラムを組むことが出来ました。