Cod sursa(job #2452718)

Utilizator nTropicGravityesadasdwaadwqafr nTropicGravity Data 31 august 2019 22:52:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include    <fstream>

using namespace std;

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

#define SEQUENCE_MAX 100000

char Sequence[SEQUENCE_MAX], *P = Sequence;

long Termen();
long Factor();

long Solve() {
    long result = Termen();

    while (*P == '+' || *P == '-')
        switch (*P) {
        case '+':
            P++;
            result += Termen();
            break;

        case '-':
            P++;
            result -= Termen();
            break;
        }

    return result;
}

long Termen() {
    long result = Factor();

    while (*P == '*' || *P == '/')
        switch (*P) {
        case '*':
            P++;
            result *= Factor();
            break;

        case '/':
            P++;
            result /= Factor();
            break;
        }

    return result;
}

long Factor() {
    long result = 0;

    if (*P == '(') {
            P++;
            result = Solve();
            P++;
        }
    else
        while (*P >= '0' && *P <= '9') {
            result = result * 10 + *P - '0';
            P++;
        }

    return result;
}

int main() {
    fin >> Sequence;
    fout << Solve();
}