Cod sursa(job #3197351)

Utilizator panterasbook29Turcu Stiolica Alexandru panterasbook29 Data 26 ianuarie 2024 16:41:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

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

string s;
int p = 0;

int expresie();

int factor() {
    int r;

    if (s[p] == '(') {
        p++;
        r = expresie();
        p++;
    }
    else
        for (r = 0; '0' <= s[p] and s[p] <= '9'; p++)
            r = 10 * r + s[p] - '0';
    return r;
}

int termen() {
    int r = factor();

    while (s[p] == '*' or s[p] == '/')
        if (s[p] == '*') {
            p++;
            r *= factor();
        }
        else {
            p++;
            r /= factor();
        }
    return r;
}

int expresie() {
    int r = termen();

    while (s[p] == '+' or s[p] == '-')
        if (s[p] == '+') {
            p++;
            r += termen();
        }
        else {
            p++;
            r -= termen();
        }
    return r;
}

int main() {
    fin >> s;
    fout << expresie();
}