Cod sursa(job #3285565)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 13 martie 2025 10:28:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;

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

string s;

int k = 0;

int eval();
int fact();

int solve()
{
    int nr = fact();
    while (s[k] == '+' || s[k] == '-')
    {
        if (s[k] == '+')
            ++k, nr += fact();
        else
            ++k, nr -= fact();
    }
    return nr;
}

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

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

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