Cod sursa(job #788396)

Utilizator round2Test P round2 Data 14 septembrie 2012 18:07:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 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('0'<=*b && *b<='9')
        {
            r = r*10 + *b-'0';
            b++;
        }
    }
    return r;
}

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

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