Cod sursa(job #2911617)

Utilizator alexandru_ioan.06Alexandru Ioan alexandru_ioan.06 Data 30 iunie 2022 19:13:31
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
char s[1000001];
int i;
int expresie();
int termen();
int factor();
int constanta();
int main()
{
    cin.getline(s,1000001);
    i=0;
    cout<<expresie();
}
int expresie (){

    int r=termen(); // primul termen al expresiei
    while(s[i]=='+' || s[i]=='-'){

        if(s[i]=='+') i++,r+=termen();
        else i++,r-=termen();
    }
    return r;
}
int termen (){

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

        if(s[i]=='*') i++,r*=factor();
        else i++,r/=factor();
    }
    return r;
}
int factor(){

    int r;
    if(s[i]=='('){
        i++; // sar peste paranteza
        r=expresie();
        i++; // sar peste paranteza inchisa
       }
    else r=constanta();

    return r;
}
int constanta (){

    int r=0;
    while(s[i]>='0' && s[i]<='9') {

        r=r+s[i]-'0';
        i++;
    }
    return r;
}