Cod sursa(job #2671098)

Utilizator KPP17Popescu Paul KPP17 Data 11 noiembrie 2020 14:38:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define fisier "evaluare"
std::ifstream in(fisier ".in");
std::ofstream out(fisier ".out");
char S[100001]; int i, zero();
int doi()
{
    if (S[i] == '(')
        return i++, zero();
    int n = 0;
    while ('0' <= S[i] and S[i] <= '9')
        (n *= 10) += S[i++] - '0';
    return n;
}
int unu()
{
    int p = doi();
    for (;;)
        switch (S[i++])
        {
            case '*': p *= doi(); break;
            case '/': p /= doi(); break;
            default: i--; return p;
        }
}
int zero()
{
    int s = 0, semn = 1;
    while (s += semn * unu(), S[i] and S[i] != ')')
        semn = (S[i++] == '+'? 1: -1);
    i++; return s;
}
int main()
{
    in >> S;
    out << zero();
}