Cod sursa(job #1418863)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 14 aprilie 2015 11:43:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fi("evaluare.in");
ofstream fo("evaluare.out");

const int MAX_N = 100005;
char s[MAX_N];
int i=0;
int expresie();

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

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

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

int main(){
    fi>>s;
    
    fo<<expresie();
    
    fi.close();
    fo.close();
    return 0;
}