Cod sursa(job #3201204)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 7 februarie 2024 09:18:49
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char c[100002];
int i;

static inline int Expresie();
static inline int Termen();
static inline int Factor();
static inline int Numar();

static inline int Expresie() {
    int nm = Termen();
    while(c[i] == '+' || c[i] == '-') {
        if(c[i] == '+') {
            i++;
            nm += Termen();
        }
        else {
            i++;
            nm -= Termen();
        }
    }
    return nm;
}

static inline int Termen() {
    int nm = Factor();
    while(c[i] == '*' || c[i] == '/') {
        if(c[i] == '*') {
            i++;
            nm *= Factor();
        }
        else {
            i++;
            nm /= Factor();
        }
    }
    return nm;
}

static inline int Factor() {
    int nm;
    if(c[i] == '(') {
        i++;
        nm = Expresie();
        i++;
    }
    else nm = Numar();
    return nm;
}

static inline int Numar() {
    int nm = 0;
    while('0' <= c[i] && c[i] <= '9') {
        nm += c[i] - '0';
        i++;
    }
    return nm;
}

int main() {
    fin >> c;
    fout << Expresie();

    return 0;
}