Cod sursa(job #1246553)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 21 octombrie 2014 11:47:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include<cstdio>
#include<cstring>
int l,i,j;
char s[200000];
FILE *f,*g;
int expresie();
int termen();
int factor();
int expresie(){
       int r=termen();
       while(s[i]=='+'||s[i]=='-'){
              if(s[i]=='+'){
                     i++;
                     r+=termen();
              }
              else{
                     i++;

                     r-=termen();
              }
       }
       return r;
}
int termen(){
       int r=factor();
       while(s[i]=='*'||s[i]=='/'){
              if(s[i]=='*'){

                     i++;
                     r*=factor();
              }

              else{
                     i++;
                     r/=factor();

              }
       }
       return r;
}
int factor(){
       int r;
       if(s[i]=='('){
              i++;
              r=expresie();
              i++;

       }
       else{
              r=0;
              while(s[i]>='0'&&s[i]<='9'){
                     r=r*10+(s[i]-'0');

                     i++;
              }
       }
       return r;
}
int main(){
       f=fopen("evaluare.in","r");
       g=fopen("evaluare.out","w");
       fscanf(f,"%s",s);
       i=0;
       fprintf(g,"%d",expresie());

       fclose(f);
       fclose(g);
    return 0;
}