실험 6-5 간단한 계산기
간단한 계산기의 작업을 시뮬레이션합니다. 계산기가 덧셈, 뺄셈, 곱셈 및 나눗셈만 수행할 수 있다고 가정하면 피연산자와 결과가 모두 정수이고 4개의 연산자는 동일한 우선 순위를 가지며 왼쪽에서 오른쪽으로 순서대로 계산됩니다.
입력 형식:
4연산 공식을 공백 없이 한 줄에 입력하고 피연산자를 하나 이상 입력합니다. 등호 "="를 만나 입력의 끝을 나타냅니다.
출력 형식:
수식의 연산 결과를 한 줄로 출력하거나, 나눗셈 분모가 0이거나 부정 연산자가 있는 경우 오류 메시지 "ERROR"를 출력합니다.
입력 샘플:
1+2*10-10/2=
출력 샘플:
10
아이디어 : 언뜻 보기에 이 질문은 중위 표현식의 평가와 약간 비슷해 보이지만 질문 스템을 주의 깊게 살펴보면 질문에 동일한 우선순위를 요구하는 4개의 연산자가 있음 을 알 수 있습니다. 연산자 우선 순위가 생략됨 판단 과정에서는 하나씩 계산하는 것으로 충분하므로 스택 사용을 절약할 수 있습니다.
#include <math.h>
#include <stdio.h>
int main(){
char c;
int result = 0,opnum;
scanf("%d",&result);
c = getchar();
while(c!='='){
scanf("%d",&opnum);
if(c == '+')
result+=opnum;
else if(c == '-')
result-=opnum;
else if(c == '*')
result*=opnum;
else if(c == '/')
{
if(opnum == 0){
printf("ERROR");
return 0;
}else
result/=opnum;
}else{
printf("ERROR");
return 0;
}
c = getchar();
}
printf("%d",result);
return 0;
}