Cod sursa(job #640153)

Utilizator ion824Ion Ureche ion824 Data 24 noiembrie 2011 20:46:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;
char s[100005]; int i=0;
int termen();
int factor();

int eval(){
   int v=termen();
   while(s[i]=='+' || s[i]=='-'){
       if(s[i]=='+'){ ++i; v+=termen(); } else { ++i; v-=termen(); } }
   return v;                   
}

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

int factor(){
    int v=0;
    if(s[i]=='('){ ++i; v=eval(); ++i; }
      else while(s[i]>='0' && s[i]<='9'){ v=(v*10)+s[i]-'0'; ++i; }
return v;
}

int main(void){
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    fin>>s;
    fout<<eval();
    fin.close(); fout.close();
 return 0;   
}