Cod sursa(job #759120)

Utilizator test13test13 test13 Data 16 iunie 2012 19:25:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <cstdio>
#define MAX 100001

char c[MAX],*g;

int eval();
int termen();
int factor();

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

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

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

int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
        scanf("%s",c);
        g=c;

        printf("%d\n",eval());
}