Cod sursa(job #2518746)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 6 ianuarie 2020 15:30:16
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");
char c[100001];
int i;
int solve();
int mul();
int num();
int solve() {
    int t = mul();
    while (c[i] == '+' || c[i] == '-') {
        if (c[i] == '+') {
            i++;
            t += mul();
        } else {
            i++;
            t -= mul();
        }
    }
    return t;
}
int mul() {
    int t = num();
    while (c[i] == '*' || c[i] == '/') {
        if (c[i] == '*') {
            i++;
            t *= num();
        } else {
            i++;
            t /= num();
        }
    }
    return t;
}
int num() {
    int t = 0;
    if (c[i] == '(') {
        i++;
        t = solve();
        i++;
    } else {
        while (isdigit(c[i])) {
            t = t * 10 + (int)c[i++] - '0';
        }
        return t;
    }
}
int main() {
    fin.getline(c, 100001);
    fout << solve();
    return 0;
}