Cod sursa(job #874410)

Utilizator roparexRoparex roparex Data 8 februarie 2013 12:45:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
char a[100001],*p;
int numar();
int factor();
int termen();
int main()
{
   freopen("evaluare.in","rt",stdin);
   freopen("evaluare.out","wt",stdout);
   scanf("%s",&a);
   p=a;
   printf("%ld",termen());
   return 0;
}
int numar()
{
    int val=0;
    if(*p=='(')
       {
           ++p;
           val=termen();
           ++p;
       }
       else
        while(*p>='0'&&*p<='9')
        {val=val*10+(*p-'0');++p;}
        return val;
}
int factor()
{
    int val=numar();
    while(*p=='/'||*p=='*')
    if(*p=='*'){++p;val*=numar();}
    else {++p;val/=numar();}
    return val;
}
int termen()
{
    int val=factor();
    while(*p=='+'||*p=='-')
    if(*p=='+'){++p;val+=factor();}
    else{++p;val-=factor();}
    return val;
}