Cod sursa(job #766932)

Utilizator test_666013Testez test_666013 Data 12 iulie 2012 14:57:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#define MAX 100001

char a[MAX],*b;

int eval();

int factor(){
    int r = 0;
    if( *b == '(' )
    {
        b++;
        r = eval();
        b++;
    } else {
        while( *b >= '0' && *b <= '9' )
        {
            r = r * 10 + *b - '0';
            b++;
        }
    }
    return r;
}

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

int eval(){
    int r = termen();
    while( *b == '+' || *b == '-' )
    {
        if( *b == '+' )
        {
            b++;
            r += termen();
        } else {
            b++;
            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;
}