Cod sursa(job #2712037)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 25 februarie 2021 09:01:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

string str;
string::iterator i;

int eval();
int mult();
int nr();

int eval() {
    int res = mult();
    while(*i == '+' || *i == '-') {
        if(*i == '+') {
            i++;
            res += mult();
        } else {
            i++;
            res -= mult();
        }
    }
    return res;
}

int mult() {
    int res = nr();
    while(*i == '*' || *i == '/') {
        if(*i == '*') {
            i++;
            res *= nr();
        } else {
            i++;
            res /= nr();
        }
    }
    return res;
}

int nr() {
    if(*i == '(') {
        i++;
        int res = eval();
        i++;
        return res;
    }
    int res = 0;
    while('0' <= *i && *i <= '9') {
        res = res * 10 + *i - '0';
        i++;
    }
    return res;
}
int main() {
    f >> str;
    str.push_back('x');
    i = str.begin();
    g << eval() << "\n";
    return 0;
}