Cod sursa(job #2172800)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 15 martie 2018 17:58:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char t[DIM];
int i;
int adunare();
int inmultire();
int expresie();
int main () {
    fin>>t;
    fout<<adunare()<<"\n";
    return 0;
}
int adunare(){
    int val=inmultire();
    while(t[i]=='+'||t[i]=='-'){
        i++;
        if(t[i-1]=='+')
            val+=inmultire();
        else
            val-=inmultire();
    }
    return val;
}
int inmultire(){
    int val=expresie();
    while(t[i]=='*'||t[i]=='/'){
        i++;
        if(t[i-1]=='*')
            val*=expresie();
        else
            val/=expresie();
    }
    return val;
}
int expresie(){
    int val=0;
    if(t[i]=='('){
        i++;
        val=adunare();
        i++;
        return val;
    }
    while(t[i]>='0'&&t[i]<='9'){
        val=val*10+t[i]-'0';
        i++;
    }
    return val;
}