Cod sursa(job #3280151)

Utilizator rocker_nespalatTudurachi Calin rocker_nespalat Data 25 februarie 2025 17:31:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

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

int termen();
int factor();

string s;
int i;

int evaluare()
{
    int r = termen();
    while(s[i] == '-' || s[i] == '+')
    {
        if(s[i] == '-')
            ++i, r -= termen();
        else
            ++i, r += termen();
    }
    return r;
}

int termen()
{
    int f = factor();
    while(s[i] == '*' || s[i] == '/')
    {
        if(s[i] == '*')
            ++i, f *= factor();
        else
            ++i, f /= factor();
    }
    return f;
}

int factor()
{
    int64_t r = 0;
    if(s[i] == '(')
    {
        ++i;
        r = evaluare();
        ++i;
    }
    else
    {
        while(isdigit(s[i]))
        {
            r = r * 10 + (s[i] - '0');
            ++i;
        }
    }
    return r;
}

int main()
{
    in >> s;
    out << evaluare();
    return 0;
}