Cod sursa(job #3290811)

Utilizator altomMirel Fanel altom Data 31 martie 2025 23:43:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

string s;
int i=0;

int expresie();
int termen();
int factor();
int constanta();

int expresie(){
    int r=termen();
    while(s[i]=='+' || s[i]=='-'){
        if(s[i]=='+'){
            i++;
            r+=termen();
        }
        if(s[i]=='-'){
            i++;
            r-=termen();
        }
    }
    return r;
}

int termen(){
    int r=factor();
    while(s[i]=='*' || s[i]=='/'){
        if(s[i]=='*'){
            i++;
            r*=factor();
        }
        if(s[i]=='/'){
            i++;
            r/=factor();
        }
    }
    return r;
}

int factor(){
    int r;
    if(s[i]=='('){
        i++;
        r=expresie();
        i++;
    }else{
        r=constanta();
    }
    return r;
}

int constanta(){
    int r=0;
    while(s[i]>='0' && s[i]<='9'){
        r=r*10+s[i]-'0';
        i++;
    }
    //cout<<i<<" "<<r<<"\n";
    return r;
}


int main()
{
    fin>>s;
    //cout<<s;

    fout<<expresie();


    return 0;
}