Cod sursa(job #2368377)

Utilizator cristiifrimIfrim Cristian cristiifrim Data 5 martie 2019 15:48:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char S[100010], *p = S;

int expresie();
int factor() {

    int r;

    if(*p == '(') {
        ++p;
        r = expresie();
        ++p;
    }
    else {
        r = 0;
        while('0' <= *p && *p <= '9') {
            r = r * 10 + *p - '0';
            ++p;
        }
    }
    return r;
}
int termen() {
    int r = factor();
    while(*p == '*' || *p == '/')
        switch(*p) {
            case '*': ++p; r*=factor(); break;
            case '/': ++p; r/=factor(); break;
        }
    return r;
}
int expresie() {
    int r = termen();
    while(*p == '+' || *p == '-')
        switch(*p) {
            case '+': ++p; r += termen(); break;
            case '-': ++p; r -= termen(); break;
        }
    return r;
}

int main() {
    f >> S;
    g << expresie();
    g.close();
    return 0;
}