Cod sursa(job #2720054)

Utilizator AlexBraileanuAlexandru Braileanu AlexBraileanu Data 10 martie 2021 15:52:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <algorithm>
#define vl p < S . size ()
#define y S [p]
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int p , E () , T () , F ();
string S;
int E (){
    int x = T ();
    while (y == '+' || y == '-'){
        ++ p;
        if (S [p - 1] == '+')
            x += T ();
        else
            x -= T ();
    }
    return x;
}
int T (){
    int x = F ();
    while (y == '*' || y == '/'){
        ++ p;
        if (S [p - 1] == '*')
            x *= F ();
        else
            x /= F ();
    }
    return x;
}
int F (){
    int x = 0;
    if (isdigit (S [p])){
        while (vl && isdigit (S [p])){
            x = x * 10 + (S [p] - '0');
            ++ p;
        }
        return x;
    }
    if (S [p] == '(')
        ++ p;
    x = E ();
    ++ p;
    return x;
}

int main (){
    f >> S;
    g << E ();
    return 0;
}