Cod sursa(job #1920339)

Utilizator blatulInstitutul de Arta Gastronomica blatul Data 9 martie 2017 23:41:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

char nextChar;

char Consume() {
    char result = nextChar;
    nextChar = getchar();
    return result;
}

int E();

int F() {
    int aux;
    if(nextChar == '(') {
        Consume();
        aux = E();
        Consume();
    } else {
        aux = 0;
        while(isdigit(nextChar))
            aux = 10 * aux + Consume() - '0';
    }
    return aux;
}

int T() {
    int aux = F();
    while(nextChar == '*' || nextChar == '/')
        if(Consume() == '*')
            aux *= F();
        else
            aux /= F();
    
    return aux;
}

int E() {
    int aux = T();
    while(nextChar == '+' || nextChar == '-')
        if(Consume() == '+')
            aux += T();
        else
            aux -= T();
    return aux;
}

int main() {
    #ifdef INFOARENA
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    #endif
    
    Consume();
    printf("%d\n", E());
}