プログラミング初心者です。
c言語で電卓を作成してみましたが、うまく動いてくれません。
コンパイルできない。 エラー個所をコメントアウトして実行すると、一文字入力後操作を受け付けなくなる。
どこが間違っているのか、どう改善したらよいのかアドバイスをください。
以下コード
#include <string.h> #include <stdio.h> #include <math.h> #define PI 3.141592 int main(void) { char bye = '0'; char op = '0'; char moji[4] = "\0"; char fun = '\0'; double num = 0; double ans = 0; //演算子読み込み step1_1: { scanf("%[q]", &bye); if (bye == 'q') { return 0; } //文字読み込み(読み込まなければ飛ばす) scanf("%[sincostan", &moji); if (moji != "sin" | "cos" | "tan") { goto step1_1; } else if (moji == "sin") { fun = 's'; } else if (moji == "cos") { fun = 'c'; } else if (moji == "tan") { fun = 't'; } //数字読み込み scanf("%lf", &ans); //関数の計算 if (fun == 's') { ans = sin(ans / 180 * PI); } else if (fun == 'c') { ans = cos(ans / 180 * PI); } else if (fun == 't') { ans = tan(ans / 180 * PI); } //リセット op = '\0'; moji[4] = "\0"; fun = '\0'; } while (1) { //演算子読み込み step1_2: { while (1) { scanf("%[q]", &bye); if (bye == 'q') { return 0; } scanf("%[+-*/]", &op); if (op == '+' | '-' | '*' | '/') { break; } else { printf("ERROOR\n"); } return 0; } } //文字読み込み(読み込まなければ飛ばす) scanf("%[sincostan", &moji); if (moji != "sin" | "cos" | "tan") { goto step1_2; } else if (moji == "sin") { fun = 's'; } else if (moji == "cos") { fun = 'c'; } else if (moji == "tan") { fun = 't'; } //数字読み込み scanf("%lf", &num); //関数の計算 if (fun == 's') { num = sin(num / 180 * PI); } else if (fun == 'c') { num == cos(num / 180 * PI); } else if (fun == 't') { num == tan(num / 180 * PI); } //計算 switch (op) { case'+': ans += num; break; case'-': ans -= num; break; case'*': ans *= num; break; case'/': ans /= num; break; } //表示 printf("%f", ans); //リセット op = '\0'; moji[4] = "\0"; fun = '\0'; num = 0; } }
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/01 06:30