Cod sursa(job #3293793)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 12 aprilie 2025 16:42:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");

int poz;

string s;

int term ();
int fact();

int eval ()
{
    int nr = term();
    while (s[poz] == '+' || s[poz] == '-')
    {
        if (s[poz] == '+')
            ++poz, nr += term();
        else
            ++poz, nr -= term();
    }
    return nr;
}

int term ()
{
    int nr = fact();
    while (s[poz] == '*' || s[poz] == '/')
    {
        if (s[poz] == '*')
            ++poz, nr *= fact();
        else
            ++poz, nr /= fact();
    }
    return nr;
}

int fact()
{
    int nr = 0;
    if (s[poz] == '(')
    {
        ++poz;
        nr = eval();
        ++poz;
    }
    else
    {
        while (isdigit(s[poz]))
            nr = nr * 10 + (s[poz] - '0'), ++poz;
    }
    return nr;
}

int main()
{
    cin >> s;
    cout << eval() << '\n';
    return 0;
}