Cod sursa(job #3245668)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 30 septembrie 2024 00:19:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
using namespace std;

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

int factor(), termen();
string EVAL;
int poz = 0;

int evaluare() {
    int R = termen();
    while (EVAL[poz] == '-' || EVAL[poz] == '+') {
        if (EVAL[poz] == '-') {
            poz++;
            R -= termen();
        }
        else {
            if (EVAL[poz] == '+') {
                poz++;
                R += termen();
            }
        }
    }
    return R;
}
int termen() {
    int F = factor();
    while (EVAL[poz] == '*' || EVAL[poz] == '/') {
        if (EVAL[poz] == '*') {
            poz++;
            F *= factor();
        }
        else {
            if (EVAL[poz] == '/') {
                poz++;
                F /= factor();
            }
        }
    }
    return F;
}
int factor() {
    long long r = 0;
    if (EVAL[poz] == '(') {
        poz++;
        r = evaluare();
        poz++;
    }
    else {
        while (EVAL[poz] >= '0' && EVAL[poz] <= '9') {
            r = r * 10 + (EVAL[poz] - '0');
            poz++;
        }
    }
    return r;
}
int main() {
    cin >> EVAL;
    EVAL += '$';
    cout << evaluare() << '\n';
    return 0;
}