Cod sursa(job #3324578)

Utilizator robert.barbu27robert barbu robert.barbu27 Data 22 noiembrie 2025 17:03:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>
using namespace std;

const int NMAX = 2005;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int idx;
string s;
long termen();
long factor();
long evalExpresie()
{
    // Expresie = a+b+c+...
    int suma = termen();
    while (s[idx] == '+' || s[idx] == '-')
    {
        if (s[idx] == '+')
        {
            idx++;
            suma = suma + termen();
        }
        else
        {
            idx++;
            suma = suma - termen();
        }
    }
    return suma;
}
long termen()
{
    int produs = factor();
    while (s[idx] == '*' || s[idx] == '/')
    {
        if (s[idx] == '*')
        {
            idx++;
            produs = produs * factor();
        }
        else
        {
            idx++;
            produs = produs / factor();
        }
    }
    return produs;
}
long factor()
{
    long rezultat = 0;
    if (s[idx] == '(')
    {
        idx++;
        rezultat = evalExpresie();
        idx++;
    }
    else
    {
        while (s[idx] >= '0' && s[idx] <= '9')
        {
            rezultat = rezultat * 10 + s[idx] - '0';
            idx++;
        }
    }
    return rezultat;
}
int main()
{
    fin >> s;
    fout << evalExpresie() << '\n';
}