Cod sursa(job #763422)

Utilizator test666013Testez test666013 Data 2 iulie 2012 10:59:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>

#define MAX 100001
char a[MAX],*b;

int eval();
int termen();

int factor(){
    int n = 0;
    if(*b=='(')
    {
        b++; //trecem peste (
        n = eval();
        b++; //trecem peste )
    } else {
        while('0'<=*b && *b<='9')
        {
            n = n*10 + *b - '0';
            b++;
        }
    }
    return n;
}

int termen(){
    int r = factor();
    while(*b=='*' || *b=='/')
    {
        if(*b=='*')
        {
            b++; // trecem peste *
            r *= factor();
        } else {
            b++; //trecem peste /
            r /= factor();
        }
    }
    return r;
}

int eval(){
    int r = termen();
    while(*b=='+' || *b=='-')
    {
        if(*b=='+')
        {
            b++; // trecem peste +
            r += termen();
        } else {
            b++; // trecem peste -
            r -= termen();
        }
    }
    return r;
}

int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
        scanf("%s ",a);
        b = a;
        printf("%d\n",eval());
    return 0;
}