Cod sursa(job #1082189)

Utilizator MacWonkMihai Alexandru Cosmin MacWonk Data 14 ianuarie 2014 12:01:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
# include <cstdio>
# include<cstring>
# define maxn 100010
using namespace std;

char s[maxn], *p=s;

int grad1();
int grad2();
int numar();

int grad1()
{
    int r = grad2();
    while(*p == '+' || *p =='-' )
        if(*p == '+')
            ++p, r += grad2();
        else
            ++p, r -= grad2();
    return r;
}

int grad2()
{
    int r = numar();
    while(*p == '*' || *p =='/')
        if(*p == '*')
            ++p,r *= numar();
        else
            ++p,r /= numar();
    return r;
}

int numar()
{
    int r = 0;
    if(*p == '(')
        ++p, r = grad1(),++p;
    else
        while(*p>='0' && *p<='9')
            r = r*10 + *p - '0', ++p;
    return r;
}

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    printf("%d\n",grad1());
    return 0;
}