Cod sursa(job #3216241)

Utilizator BogdanDavDavid Bogdan BogdanDav Data 15 martie 2024 19:07:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb

#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char s[100002];
int i;
int expresie(); int termen(); int factor(); int constanta();
int main()
{
    cin.getline(s,100002);
    cout<<expresie();
    return 0;
}
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=0;
    if(s[i]=='('){
        i++;
        x=expresie();
        i++;
    }else
    {
        x=constanta();
    }
    return x;
}
int constanta(){
    int x=0;
    while(s[i]>='0'&&s[i]<='9'){
        x=x*10+s[i]-'0';
        i++;
    }
    return x;
}