- ベストアンサー
プログラミングC言語の問題:演算結果を判定するプログラムを作成する方法
- 5つのint型変数a,b,c,ans,responseを宣言し、初期値をユーザーに入力させるプログラムを作成します。
- ユーザーに演算子(+,-,*,/,%)を入力してもらい、正しい結果の判定を行い、結果を表示します。
- 算術演算子を使った25通りの計算結果を比較し、正誤を判定するプログラムを作成します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 特に正しければ1、間違っていたら0を表示するプログラムがわかりません。 変数の名前から類推すると、 if (ans == response) printf("judge : 1\n"); else printf("judge : 0\n"); もしくは直接 printf("judge : %d\n", (ans == response)); scanf() が使えるなら、 > a,b,cの値はscanf関数で読みこむことにより初期化する > scanf関数によりユーザーの答案をresponseに読み込み はできるし。 多分、現状だと、a(1)b(2)c=と表示して は、 printf("a + b + c = "); で表示して、ユーザーの response を待てばよいでしょう。 あと、 ans = a + b + c; など、演算子をひととおり入れて、25セット作って、結果を出せばOK。
その他の回答 (4)
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
あちらのサイトのnaniwaさんはマニアックですよねぇ。 /* Gcc on Mac OSX */ #include <stdio.h> #include <stdlib.h> int tukareruyo(int, int, int); int main(void) { char *figure[]={"+","-","*","/","%"}; int i,j; int a,b,c,ans,responce; printf("a b c: "); scanf("%d %d %d", &a,&b,&c); for(i=0;i<5;i++){ for(j=0;j<5;j++){ ans = (i<2 && j>1) ? tukareruyo(a,tukareruyo(b,c,*figure[j]),*figure[i]) : tukareruyo(tukareruyo(a,b,*figure[i]), c, *figure[j]); printf("%d %s %d %s %d= ", a, figure[i], b, figure[j], c); scanf("%d",&responce); printf("\tresult= %d(%d)\n", responce==ans,ans); } } return 0; } int tukareruyo(int ans, int temp, int hugo) { switch (hugo) { case '+': ans+=temp; break; case '-': ans-=temp; break; case '*': ans*=temp; break; case '/': if(temp==0) { printf("division by zero error\n"); exit(1); } ans/=temp; break; default: ans%=temp; break; } return ans; }
- yaemon_2006
- ベストアンサー率22% (50/220)
- magicalpass
- ベストアンサー率58% (378/648)
25個も演算式作るのはエレガントじゃないので…… (入力値のエラーチェックとかはしてないので、b や c に 0 を 入れないでね) #include <stdio.h> int calc(int m, int n, int ope) { int result; switch (ope) { case 0: // + result = m + n; break; case 1: // - result = m - n; break; case 2: // * result = m * n; break; case 3: // / result = m / n; break; case 4: // % result = m % n; break; } return(result); } int calc1(int a, int b, int c, int ope1, int ope2) { int result; switch (ope1) { case 0: // + switch (ope2) { case 0: // + case 1: // - result = calc(a + b, c, ope2); break; default: result = a + calc(b, c, ope2); break; } break; case 1: // - switch (ope2) { case 0: // + case 1: // - result = calc(a - b, c, ope2); break; default: result = a - calc(b, c, ope2); break; } break; case 2: // * result = calc(a * b, c, ope2); break; case 3: // / result = calc(a / b, c, ope2); break; case 4: // % result = calc(a % b, c, ope2); break; } return(result); } void main() { int a, b, c, ans, response; int i, j; char* operate[] = {"+", "-", "*", "/", "%"}; // 数字の入力 printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); printf("c = "); scanf("%d", &c); for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { // 回答入力 printf("%d %s %d %s %d = ", a, operate[i], b, operate[j], c); scanf("%d", &response); // 演算の実行 ans = calc1(a, b, c, i, j); // 比較 if (response == ans) { // 正解 printf("1\n"); } else { // 間違い printf("0\n"); } } } }
- DIooggooID
- ベストアンサー率27% (1730/6405)