Cod sursa(job #2771426)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 27 august 2021 11:54:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int pos;
int fact();
int term();
int eval();
int fact() {
    int ret;
    if(s[pos] == '(') {
        pos++;
        ret = eval();
        pos++;
    } else {
        ret = 0;
        for(; '0' <= s[pos] && s[pos] <= '9'; ) {
            ret = ret * 10 + (s[pos++] - '0');
        }
    }
    return ret;
}
int term() {
    int ret = fact();
    for(; s[pos] == '*' || s[pos] == '/'; ) {
        if(s[pos++] == '*') {
            ret *= fact();
        } else {
            ret /= fact();
        }
    }
    return ret;
}
int eval() {
    int ret = term();
    for(; s[pos] == '+' || s[pos] == '-'; ) {
        if(s[pos++] == '+') {
            ret += term();
        } else {
            ret -= term();
        }
    }
    return ret;
}
int main() {
    fin >> s;
    fout << eval() << '\n';
    return 0;
}