入力できる数値の項は3項までとします。
途中まで作成したのですが、上手くいきません。
問題点は以下に記載します。
・2項の演算が行われない。
・3項の演算は正確に行われるが、処理が抜けてしまって2項の計算結果も表示されてしまう。
二項に飛ぶ処理が上手くいかないのです。ご指導お願いします。
#include <stdio.h>
int main(void)
{
int answer; /*答え*/
int x,y,z; /*x=第一項,y=第二項,第三項*/
char op1,op2; /*演算子1、演算子2*/
while(1){
printf("式を入力してください\n");
printf("式:");
scanf("%d %c %d %c %d" ,&x,&op1,&y,&op2,&z);
if((op1=='+'|'-'|'*'|'/') && (op2=='+'|'-'|'*'|'/'))
{
switch(op2){
case '+':
answer=y+z;
break;
case '-':
answer=y-z;
break;
case '*':
answer=y*z;
break;
case '/':
if(z==0){
printf("ERROR\n");
return (1);
}
answer=y/z;
break;
default:
printf("ERROR\n");
return 0;
}
switch(op1){
case '+':
answer=x+answer;
break;
case '-':
answer=x-answer;
break;
case '*':
answer=x*answer;
break;
case '/':
if(y==0){
printf("ERROR\n");
return (1);
}
answer=x/answer;
break;
default:
printf("ERROR\n");
return 0;
}
printf("答え:%d\n",answer);
}
if(op1=='+'|'-'|'*'|'/')
{
switch(op1){
case '+':
answer=x+y;
break;
case '-':
answer=x-y;
break;
case '*':
answer=x*y;
break;
case '/':
if(y==0){
printf("ERROR\n");
return (1);
}
answer=x/y;
break;
default:
printf("ERROR\n");
return 0;
}
printf("答え:%d\n",answer);
}
}
}