Cod sursa(job #250118)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 30 ianuarie 2009 10:36:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<stdio.h>

char S[100001],*p=S;

long termen(void);
long factor(void);

long eval()
{
    long r=termen();
    while(*p=='+'||*p=='-')
     if(*p=='+') {
         ++p;
         r+=termen();
         }
        else if(*p=='-') {
            ++p;
            r-=termen();
            }
    return r;
}

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

long factor()
{
    long r=0;
    if(*p=='(')
     {
      ++p;
      r=eval();
      ++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);
    scanf("%s",&S);
    printf("%d",eval());
    return 0;
}