ページ 11

よろしければ教えてください

Posted: 2009年5月27日(水) 01:07
by ユーリ
sacanf関数を用いて計算方法(+、-、*、/)と二個の整数をキーボードから入力し、計算方法よって、二個
の整数の計算を行なうものです。
これをswitch文で行いたいのですが
割り算と指定したとき0で割り算しないようにするにはどうしたらいいのでしょうか?
そこだけがわかりません。
よろしければお教えください。

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 01:16
by kazuoni
scanfの打ち間違えですかね?^^;

以下はC言語かつ
命題において、分母に0が来たら計算終了を想定しています。

scanf("%d,%d",&a1,%a2);

のように読み取り、a1/a2を想定するなら、
a2が0ならば演算処理をしない(if文)
でよいのではないでしょうか?

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 01:20
by BEMANI
>>ユーリさん
割り算の時、除数が0であるかどうかを判定すればいいと思います。
(a/bという割り算で、bに0が入力されたとすると if(b == 0){ もう一度入力等 })

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 01:23
by BEMANI
>>kazuoniさん
scanfの第三引数が %a2になってますよ;
しかも思いっきりかぶってしまい申し訳ございませんでした;

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 01:28
by ユーリ
#include <stdio.h>

main()

{
int a,b;
char c;

printf("+,-,*,/の何れかを入力してください\n");
scanf("%c", &c);
printf("数字を入力してください\n");
scanf("%d", &a);
scanf("%d", &b);



switch (c){
case '+':

printf("a+b=%d\n",a+b);
break;

case '-':

printf("a-b=%d\n",a-b);
break;

case '*':

printf("a*b=%d\n",a*b);
break;

case '/':

printf("a/b=%d\n",a/b);
break;



}
return 0;

}
ここまでできたのですがこれにif文を加えればよろしいのですか?

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 02:40
by kazuoni
>scanf("%d,%d",&a1,%a2);

間違えました。。
scanf("%d,%d",&a1,&a2);
が正しかったです。。

>ここまでできたのですがこれにif文を加えればよろしいのですか?
はい。

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 07:38
by ユーリ
質問なんですがさっきのプログラムにif(b==0)をいれたら/だけじゃなく*などの時も
0では割れないと表示されてしまうんですけど
/だけ表示するにはどうしたらいいのでしょうか?

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 08:41
by non
case '/': 
   ここにif文を書く
  printf("a/b=%d\n",a/b); 
break;

Re:よろしければ教えてください

Posted: 2009年5月27日(水) 17:50
by ユーリ
ありがとうございました。
助かりました。