mipt024.cpp

来自「El Judge MIPT solutions to some easy pro」· C++ 代码 · 共 54 行

CPP
54
字号
/*
Alfonso2 Peterssen
18 - 7 - 2008
MIPT #024 "Arithmetica 1.0"
*/
#include <iostream>
#include <algorithm>

using namespace std;

int pos;
string expr;

bool sign( char ch ) {
    return ch == '+' || ch == '-' || ch == '*';
}

int GetExpr();

int GetTerm() {
    int result = 0;
    if ( expr[pos] == '(' ) {
        pos++; // skip (
        result = GetExpr();
        pos++; // skip )
    } else
        while ( pos < expr.size() && expr[pos] != ')' && !sign( expr[pos] ) ) {
            result = result * 10 + expr[pos] - '0';
            pos++;
        }
    return result;
}

int GetExpr() {
    int result = GetTerm();
    for (;;)
        if ( pos < expr.size() && sign( expr[pos] ) ) {
            pos++;
            if ( expr[pos-1] == '+' ) result += GetTerm();
            if ( expr[pos-1] == '-' ) result -= GetTerm();
            if ( expr[pos-1] == '*' ) result *= GetTerm();
        } else
            break;
    return result;
}

int main() {

    cin >> expr;
    cout << GetExpr() << endl;

    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?