Cod sursa(job #157621)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 13 martie 2008 10:09:25
Problema Evaluarea unei expresii Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
//Evaluare expresie
#include <cstdio>
char s[100001];
int i;
long termen();
long factor();
long eval(){
     long r=termen();
     while (s[i]=='+' || s[i]=='-') 
       if (s[i++]=='+') r+=termen();
                   else r-=termen();
     return r;
     }
long termen(){
     long r=factor();
     while (s[i]=='*' || s[i]=='/')
       if (s[i++]='*') r*=factor();
                else r/=factor();
     return r;
     }
long factor(){
     long r=0;
     if (s[i]=='(') {i++;
                     r=eval();
                     i++;}
               else 
     while (s[i]>='0' && s[i]<='9') r=r*10+s[i++]-'0';
     return r;
     }
 int main(){
     freopen("evaluare.in","r",stdin);
     freopen("evaluare.out","w",stdout);
     scanf("%s",s);
     printf("%ld",eval());
     fclose(stdout);
     }