Cod sursa(job #3315243)

Utilizator tudorvoieVoie Tudor tudorvoie Data 13 octombrie 2025 10:27:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

string s;
int poz = 0;
int evaluare();

int factor() {
    long long rez = 0;
    if(s[poz] == '(') {
        poz++;
        rez = evaluare();
        poz++;
    } else {
        while(s[poz] >= '0' && s[poz] <= '9') {
            rez = rez * 10 + (s[poz] - '0');
            poz++;
        }
    }
    return rez;
}

int termen() {
    long long f = factor();
    while(s[poz] == '*' || s[poz] == '/') {
        if(s[poz] == '*') {
            poz++;
            f = f * factor();
        } else if(s[poz] == '/') {
            poz++;
            f = f / factor();
        }
    }
    return f;
}

int evaluare() {
    int rez = termen();
    while(s[poz] == '+' || s[poz] == '-') {
        if(s[poz] == '-') {
            poz++;
            rez = rez - termen();
        } else if(s[poz] == '+'){
            poz++;
            rez = rez + termen();
        }
    }
    return rez;
}

int main()
{
    fin >> s;
    s += '$';
    fout << evaluare();
    return 0;
}