Cod sursa(job #874408)

Utilizator DemnokStefan Demnok Data 8 februarie 2013 12:43:26
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>
char s[1000],*p;
int termen();
int factor();
int numar();
int main ()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    p=s;
    printf("%d",termen());
    return 0;
}
int termen()
{
    int val=factor();
    while(*p=='+' || *p=='-')
        if(*p=='+')
        {
          ++p;
          val+=factor();
        }
        else
        {
            ++p;
            val-=factor();
        }
    return val;
}
int factor ()
{
    int val=numar();
    while(*p=='/' || *p=='*')
        if(*p=='*')
        {
            ++p;
            val*=numar();
        }
        else
        {
            ++p;
            val/=numar();
        }
    return val;
}
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;
}