Cod sursa(job #175005)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 9 aprilie 2008 14:29:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <string.h>

char *p,S[100005];

long termen();long factor();

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

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

long factor(){
     long op=0;
     if (*p=='('){
        ++p;
        op=eval();
        ++p;
     }
     else while (*p>='0'&&*p<='9') op = op*10 + *p++ -'0';
return op;
} 

int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    
    gets(S);
    p=S;
    
    printf("%ld\n",eval());

return 0;
}