Cod sursa(job #1692334)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 20 aprilie 2016 18:13:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cstdio>
FILE*fi,*fout;
int E();
char a;
inline int getnr(){
    int nr=0;
    while(a>='0'&&a<='9'){
        nr=nr*10+a-'0';
        a=fgetc(fi);
    }
    return nr;
}
int fact(){
    int x;
    if(a>='0'&&a<='9')
       x=getnr();
    else
      if(a=='('){
         a=fgetc(fi);
         x=E();
         a=fgetc(fi);
      }
      else
         if(a=='+'){
            a=fgetc(fi);
            x=x+fact();
         }
         else{
            a=fgetc(fi);
            x=x-fact();
         }
    return x;
}
inline int term(){
    int x;
    x=fact();
    while(a=='*'||a=='/'){
        if(a=='*'){
           a=fgetc(fi);
           x=x*fact();
        }
        else{
           a=fgetc(fi);
           x=x/fact();
        }
    }
    return x;
}
inline int E(){
    int x;
    x=term();
    while(a=='+'||a=='-'){
        if(a=='+'){
           a=fgetc(fi);
           x=x+term();
        }
        else{
          a=fgetc(fi);
          x=x-term();
        }
    }
    return x;
}
int main(){
    fi=fopen("evaluare.in" ,"r");
    fout=fopen("evaluare.out" ,"w");
    a=fgetc(fi);
    fprintf(fout,"%d" ,E());
    fclose(fi);
    fclose(fout);
    return 0;
}