Cod sursa(job #2724886)

Utilizator niculaandreiNicula Andrei Bogdan niculaandrei Data 18 martie 2021 00:39:42
Problema Evaluarea unei expresii Scor 100
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");

const int LEN_MAX = 1e5 + 5;

char E[LEN_MAX];

int idx;

int Factor();
int Termen();

int Expresie()
{
    idx++;
    int ret = 0;
    ret = Factor();
    while (E[idx] == '+' || E[idx] == '-')
        if (E[idx] == '+')
        {
            idx++;
            ret += Factor();
        }
        else if (E[idx] == '-')
        {
            idx++;
            ret -= Factor();
        }
    idx++;
    return ret;
}

int Factor()
{
    int ret = Termen();
    while (E[idx] == '*' || E[idx] == '/')
        if (E[idx] == '*')
        {
            idx++;
            ret *= Termen();
        }
        else if (E[idx] == '/')
        {
            idx++;
            ret /= Termen();
        }
    return ret;
}

int Termen()
{
    if (E[idx] == '(')
        return Expresie();
    int ret = 0;
    while ('0' <= E[idx] && E[idx] <= '9')
    {
        ret = ret * 10 + E[idx] - '0';
        idx++;
    }
    return ret;
}

int main()
{
    fin >> (E + 1);
    E[0] = '(';
    E[strlen(E)] = ')';
    fout << Expresie() << "\n";
    return 0;
}