Cod sursa(job #2876816)

Utilizator GasparAndreiGaspar Andrei GasparAndrei Data 23 martie 2022 17:25:52
Problema Evaluarea unei expresii Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;
#define Inf 0x3f3f3f3f

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

string a;
int p = 0;
int rez;

int termen();
int eval();
int factor();

int eval(){

    int ans = termen();
    while(a[p] == '+'){
        p++;
        ans += termen();
    }
    while(a[p] == '-'){
        p++;
        ans -= termen();
    }
    
    return ans;
}

int termen(){

    int ans = factor();
    while(a[p] == '*'){
        p++;
        ans *= factor();
    }
    while(a[p] == '/'){
        p++;
        ans /= factor();
    }
    return ans;

}
int factor(){

    int ans = 0;
    if(a[p] == '('){
        p++;
        ans = eval();
        p++;
    }
    else{
        while(a[p] >= '0' && a[p] <= '9')
            ans = ans * 10 + (a[p++] - '0'); 
    }

    return ans;
}

int main(){

    cin >> a;
    cout << eval();


    return 0;
}