Cod sursa(job #2956512)

Utilizator TeoRoGaming_YgVoinea Ionut-Florin TeoRoGaming_Yg Data 19 decembrie 2022 18:08:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char x[100001];
int poz, lg;

int numar();
int produs();
int suma();

int numar()
{
    int rez = 0;
    if (x[poz] == '(')
    {
        poz++;
        rez = suma();
        poz++;
    }
    else
    {
        while (poz < lg && isdigit(x[poz]))
        {
            rez = rez * 10 + x[poz] - '0';
            poz++;
        }
    }
    return rez;
}

int produs()
{
    int rez = numar();
    while (poz < lg && (x[poz] == '*' || x[poz] == '/'))
    {
        if (x[poz] == '*')
        {
            poz++;
            rez = rez * numar();
        }
        else
        {
            poz++;
            rez = rez / numar();
        }
    }
    return rez;
}

int suma()
{
    int rez = produs();
    while (poz < lg && (x[poz] == '+' || x[poz] == '-'))
    {
        if (x[poz] == '+')
        {
            poz++;
            rez = rez + produs();
        }
        else
        {
            poz++;
            rez = rez - produs();
        }
    }
    return rez;
}

int main()
{
    f >> x;
    lg = strlen(x);
    g << suma();
    return 0;
}