Cod sursa(job #2951892)

Utilizator hurjui12AlexandruHurjui Alexandru-Mihai hurjui12Alexandru Data 7 decembrie 2022 19:32:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("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;
}

//(1+1)*2
//(1+1)*2+3*4

int main()
{
    fin >> x;
    lg = strlen(x);
    //poz = 0;
    fout << suma();
    return 0;
}