Cod sursa(job #3214725)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 14 martie 2024 12:52:38
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");

string s;

int poz;

int fact();
int eval();

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 = eval();
    while (s[poz] == '*' || s[poz] == '/')
    {
        if (s[poz] == '*')
            ++poz, nr *= eval();
        else
            ++poz, nr /= eval();
    }
    return nr;
}

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

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