Cod sursa(job #2710134)

Utilizator George_CristianGeorge Dan-Cristian George_Cristian Data 21 februarie 2021 21:43:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char sir[100005];
int poz;

int expresie();

int operand() {
    if (sir[poz] == '(') {
        poz++;
        int nr = expresie();
        poz++;
        return nr;
    }
    int nr = 0;
    while (isdigit(sir[poz]))
        nr = nr * 10 + sir[poz++] - '0';
    return nr;
}

int operatie() {
    int nr = operand();
    while (sir[poz] == '*' || sir[poz] == '/') {
        if (sir[poz] == '*') {
            poz++;
            nr *= operand();
        } else {
            poz++;
            nr /= operand();
        }
    }
    return nr;
}

int expresie() {
    int nr = operatie();
    while (sir[poz] == '+' || sir[poz] == '-') {
        if (sir[poz] == '+') {
            poz++;
            nr += operatie();
        } else {
            poz++;
            nr -= operatie();
        }
    }
    return nr;
}

int main() {
    f.getline(sir, 1000005);
    g << expresie();
    return 0;
}