Cod sursa(job #3155235)

Utilizator susanEmily Susan susan Data 7 octombrie 2023 18:21:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

long long factor(), termen();

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

string s;
int poz = 0;

long long eval() {
    long long r = termen();
    while (s[poz] == '+' || s[poz] == '-') {
        char c = s[poz];

        poz++;
        long long f = termen();

        if (c == '+')
            r += f;
        else if (c == '-')
            r -= f;
    }

    return r;
}

long long termen() {
    long long r = factor();
    while (s[poz] == '*' || s[poz] == '/') {
        char c = s[poz];

        poz++;
        long long f = factor();

        if (c == '*')
            r *= f;
        else if (c == '/')
            r /= f;
    }

    return r;
}

long long factor() {
    long long r = 0;

    if (s[poz] == '(') {
        poz++;
        r = eval();
        poz++;
    } else
        for (; s[poz] >= '0' && s[poz] <= '9'; poz++) {
            r *= 10;
            r += s[poz] - '0';
        }
    return r;
}


int main() {
    fin >> s;
    s += "$";
    fout << eval();

}