アプリ版:「スタンプのみでお礼する」機能のリリースについて

度々忙しい中失礼します。
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などありましたら、それもご紹介願います。
大変皆さんお忙しいとは思いますが、出来たらお願いします。
査閲ありがとうございます。

A 回答 (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);
}
のように変更しましょう。
    • good
    • 0
この回答へのお礼

見ず知らずの私に適切なアドバイスありがとうございます。
おかげで自分の考えたとおりにプログラムを組むことが出来ました。

お礼日時:2007/10/02 09:48

とりあえず, 「どのように処理をしていけばいいのか」が理解できていないような気がします. その状態では, いかなる言語を使っても同じように困るでしょう.


ちなみに
else (num2 = 0);
というのは「文法的には」おかしくないです>#1. else のあとに「冗長なかっこを持つ式文」があるだけだから.
    • good
    • 0
この回答へのお礼

その通りです。厳しい指摘ありがとうございます。
何か参考になるURL等あれば教えて頂けると幸いです。

お礼日時:2007/10/02 09:50

> else(num2=0) ;


こんな文法ないから。。。
やろうとしていることを『そのまま』書かないように。if 文は

if (条件1) {
 <条件1が成立する場合にしたい処理>
} else if (条件2) {
 <条件1が不成立で条件2が成立する場合にしたい処理>
} else {
 <条件1も条件2も不成立の場合にしたい処理>
}

でどうぞ。
    • good
    • 0
この回答へのお礼

適切なアドバイスありがとうございます。
本当にありがとうございました。

お礼日時:2007/10/02 09:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!