Cod sursa(job #2850910)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 17 februarie 2022 19:16:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string sir;
int poz = 0;

int eval();
int numar();
int inmultiri_impartiri();

int numar()
{
    if(sir[poz] == '(')
    {
        poz++;
        int paranteza = eval();
        poz++;
        return paranteza;
    }
    int nr = 0;
    while(sir[poz] >= '0' && sir[poz] <= '9')
    {
        nr = nr * 10 + (sir[poz] - '0');
        poz++;
    }
    return nr;
}

int inmultiri_impartiri()
{
    int raspuns = numar();
    while(sir[poz] == '*' || sir[poz] == '/')
    {
        if(sir[poz] == '*')
        {
            poz++;
            raspuns = raspuns * numar();
        }
        else
        {
            poz++;
            raspuns = raspuns / numar();
        }
    }
    return raspuns;
}

int eval()
{
    int raspuns = inmultiri_impartiri();
    while(sir[poz] == '-' || sir[poz] == '+')
    {
        if(sir[poz] == '-')
        {
            poz++;
            raspuns = raspuns - inmultiri_impartiri();
        }
        else
        {
            poz++;
            raspuns = raspuns + inmultiri_impartiri();
        }
    }
    return raspuns;
}

int main()
{
    in >> sir;
    out << eval() << "\n";
    return 0;
}