Cod sursa(job #3325632)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 25 noiembrie 2025 21:19:44
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <bits/stdc++.h>

using namespace std;

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

string s;
int idx;

int Eval_Plus_Minus();

int Termen()
{
    if(s[idx] == '(')
    {
        idx++;
        int rez = Eval_Plus_Minus();
        idx++;
        return rez;
    }
    int num = 0;
    while(idx < s.size() && (s[idx] <= '9' && s[idx] >= '0'))
    {
        num = num * 10 + int(s[idx]-'0');
        idx++;
    }
    return num;
}

int Eval_Inm_Imp()
{
    int rez = Termen();
    while(idx < s.size() && (s[idx] == '*' || s[idx] == '/'))
    {
        bool inm = true;
        if(s[idx] == '/')
            inm = false;
        idx++;
        int t = Termen();
        if(inm)
            rez *= t;
        else
            rez /= t;
    }
    return rez;
}

int Eval_Plus_Minus()
{
    int sum = Eval_Inm_Imp();
    while(idx < s.size() && (s[idx] == '+' || s[idx] == '-'))
    {
        bool adun = true;
        if(s[idx] == '-')
            adun = false;
        idx++;
        int t = Eval_Inm_Imp();
        if(adun)
            sum += t;
        else
            sum -= t;

    }
    return sum;
}

int main()
{
    fin >> s;
    fout << Eval_Plus_Minus();
    return 0;
}