Cod sursa(job #3272639)

Utilizator jumaracosminJumara Cosmin-Mihai jumaracosmin Data 30 ianuarie 2025 16:47:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

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

int i;
string s;

int eval();
int termen();
int factor();

int main()
{
    fin >> s;
    s += '$';
    fout << eval();
    return 0;
}

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

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

int factor()
{
    int rez = 0;
    if(s[i] == '(')
    {
        i++;
        rez = eval();
        i++;
    }
    else while(isdigit(s[i]))
        rez = rez * 10 + s[i] - '0', i++;
    return rez;
}