블루브리지 컵 표현식 계산 【귀속】

문제 설명
가감귀제와 괄호만 포함하는 합법적인 표현식을 입력하여 표현식의 값을 구하십시오.여기서 제외는 정리를 나타냅니다.
형식 입력
표현식을 포함하는 행을 입력합니다.
출력 형식
이 표현식의 값을 출력합니다.
샘플 입력
1-2+3*(4-5)
샘플 출력
-4
데이터 규모 및 규약
표현식의 길이는 100을 넘지 않으며 표현식 연산은 합법적이며 연산 과정은 모두 int내에서 진행된다.
문제 풀이 사고방식
이 문제는 백련의 한 문제와 거의 똑같다. 유일하게 다른 것은 백련의 그 문제 데이터의 더블 유형이다. 그 문제를 보면 이 문제를 알게 된다. 링크:
https://blog.csdn.net/weixin_42765557/article/details/84453253
 
AC 코드
#include 
using namespace std;
int expression_value();
int factor_value()
{
    int result=0;
    char op = cin.peek();
    if(op == '(') {
        cin.get();
        result = expression_value();
        cin.get();
    }
    else {
        while(op <= '9' && op >= '0') {
            cin.get();
            result = result*10 + (op - '0');
            op = cin.peek();
        }
    }
    return result;
}
int term_value()
{
    int result = factor_value();
    char op = cin.peek();
    while(op == '*' || op == '/') {
        if(op == '*') {
            cin.get();
            result *= factor_value();
        }
        else if(op == '/') {
            cin.get();
            result /= factor_value();
        }
        op = cin.peek();
    }
    return result;
}
int expression_value()
{
    int result = term_value();
    char op = cin.peek();
    while(op == '+' || op == '-') {
        if(op == '+') {
            cin.get();
            result += term_value();
        }
        else if(op == '-') {
            cin.get();
            result -= term_value();
        }
        op = cin.peek();
    }
    return result;
}
int main()
{
    cout << expression_value();
    return 0;
}

좋은 웹페이지 즐겨찾기