Cod sursa(job #2861755)

Utilizator ElizaTElla Rose ElizaT Data 4 martie 2022 13:19:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

string s;
int poz;

int expresie();
int nr() {
    int ans = 0,semn;
    semn = 1 - (2 * (s[poz] == '-'));
    while (s[poz] >= '0' && s[poz] <= '9') {
        ans = ans * 10 + (s[poz] - '0');
        poz++;
    }
    return semn * ans;
}
int factor() {
    int ans = 0;
    if (s[poz] == '(') {
        poz++;
        ans = expresie();
        poz++;
    }
    else
        ans = nr();
    return ans;
}
int termen() {
    int ans = factor();
    while (poz < s.size() && (s[poz] == '*' || s[poz] == '/')) {
        if (s[poz++] == '*')
            ans = ans * factor();
        else
            ans = ans / factor();
    }
    return ans;
}
int expresie() {
    int ans = termen(),semn;
    while (poz < s.size() && (s[poz] == '+' || s[poz] == '-')) {
        semn = 1 - (2 * (s[poz] == '-'));
        poz++;
        ans += semn * termen();
    }
    return ans;
}
int main()
{
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    poz = 0;
    fin >> s;
    fout << expresie();
    return 0;
}