Cod sursa(job #3144599)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 9 august 2023 11:19:12
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>

using namespace std;

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

string s;
int i;

int Expresie();
int Termen();
int Factor();

int main()
{
    cin >> s;
    cout << Expresie();

    return 0;
}

int Expresie()
{
    int rez = Termen();
    while(s[i] == '+' || s[i] == '-')
        if(s[i] == '+')
        {
            i++;
            rez += Termen();
        }
        else
        {
            i++;
            rez += Termen();
        }
    return rez;
}

int Termen()
{
    int rez = Factor();
    while(s[i] == '*' || s[i] == '/')
        if(s[i] == '*')
        {
            i++;
            rez *= Factor();
        }
        else
        {
            i++;
            rez /= Factor();
        }
    return rez;
}

int Factor()
{
    int rez = 0;
    if(s[i] == '(')
    {
        i++;
        rez = Expresie();
        i++;
    }
    else
    {
        while(s[i] >= '0' && s[i] <= '9')
        {
            rez = rez * 10 + (s[i] - '0');
            i++;
        }
    }
    return rez;
}