Cod sursa(job #2239587)

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