Cod sursa(job #780563)

Utilizator my666013Test Here my666013 Data 20 august 2012 19:53:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#define Max 100001

char a[Max],*b;

int eval();

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

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

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