Cod sursa(job #2931087)

Utilizator radu._.21Radu Pelea radu._.21 Data 30 octombrie 2022 14:26:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>


using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100001];
int i=0;
int expresie();
int termen();
int factor();
int constanta();

int expresie(){

    int x=termen();
    while(s[i]=='+' || s[i]=='-'){

        if(s[i]=='+')
           i++, x+=termen();
        else
            i++,x-=termen();
    }

    return x;

}
int termen(){

    int x=factor();
    while(s[i]=='*' || s[i]=='/'){

        if(s[i]=='*')
           i++,x*=factor();

        else
          i++,x/=factor();

    }
    return x;
}
int factor(){
    int x;
    if(s[i]=='('){
        i++;/// sra peste paranteza
        x=expresie();
        i++; /// sar peste paranteza
       }
    else
        x=constanta();
    return x;

}
int constanta(){
    int x=0;

    while(s[i]<='9' && s[i]>='0'){
        x=x*10+s[i]-'0';
        i++;
    }

    return x;
}
int main(){
    fin>>s;
    fout<<expresie();





    return 0;
}