Cod sursa(job #1820052)

Utilizator tgm000Tudor Mocioi tgm000 Data 1 decembrie 2016 09:02:28
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
char s[100002];
int poz=0;
int expresie();
int termen();
int factor();
int main(){
   freopen("evaluare.in","r",stdin);
   freopen("evaluare.out","w",stdout);
   scanf("%s",&s);
   printf("%d",expresie());
   return 0;
}
int expresie(){
   int ans=termen();
   while(s[poz]=='+'||s[poz]=='-'){
      poz++;
      if(s[poz-1]=='+')
         ans+=termen();
      else
         ans-=termen();
   }
   return ans;
}
int termen(){
   int ans=factor();
   while(s[poz]=='*'||s[poz]=='/'){
      poz++;
      if(s[poz-1]=='*')
         ans*=factor();
      else
         ans/=factor();
   }
   return ans;
}
int factor(){
   int ans=0;
   if(s[poz]=='('){
      poz++;
      ans=expresie();
      poz++;
   }else{
      while(s[poz]>='0'&&s[poz]<='9')
         ans=ans*10+s[poz++]-'0';
   }
   return ans;
}