Cod sursa(job #1740915)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 12 august 2016 15:02:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100001];
int val,i,l;
int evalExp();
int evalTerm();
int evalFact();
int eval(int &i){
     int r=0,c;
     while('0'<=s[i] && s[i]<='9'){
        c=s[i]-'0';
        r=r*10+c;
        i++;
     }
     return r;
}
int evalFact(){
    int r;
    if (s[i]=='('){
       i++;
       r=evalExp();
       i++;
    }
      else{
        r=eval(i);
      }
    return r;
}
int evalTerm(){
    int r=evalFact();
    while(i<l && (s[i]=='*' || s[i]=='/')){
        if (s[i]=='*') {
            i++;
            r=r*evalFact();
        }
          else{
            i++;
            r=r/evalFact();
          }
    }
    return r;
}
int evalExp(){
     int r=evalTerm();
     while(i<l && (s[i]=='+' || s[i]=='-')){
         if (s[i]=='+')
         {
             i++;
             r=r+evalTerm();
         }
           else{
            i++;
            r=r-evalTerm();
           }

     }
     return r;
}
int main(){
    fin.get(s,100001,'\n');
    fin.close();
    l=strlen(s);
    val=evalExp();
    fout<<val;
    fout.close();;
    return 0;
}