Cod sursa(job #2975781)

Utilizator matei8787Matei Dobrea matei8787 Data 7 februarie 2023 15:48:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string expresie;
int i;
void citire()
{
    in>>expresie;
}
int eval();
int termen();
int factor();
int get_nr()
{
    int ans = 0;
    while ( expresie[i] >= '0' && expresie[i] <= '9' && i < expresie.size() )
    {
        ans = ans * 10 + ( expresie[i] - '0' );
        i++;
    }
    return ans;
}
int eval()
{
    int rez = termen();
    while ( expresie[i] == '+' || expresie[i] == '-' )
    {
        if ( expresie[i] == '+' )
        {
            i++;
            rez += termen();
        }
        else
        {
            i++;
            rez -= termen();
        }
    }
    return rez;
}
int termen()
{
    int rez = factor();
    while ( expresie[i] == '*' || expresie[i] == '/' )
    {
        if ( expresie[i] == '*' )
        {
            i++;
            rez *= factor();
        }
        else
        {
            i++;
            rez /= factor();
        }
    }
    return rez;
}
int factor()
{
    int rez;
    if ( expresie[i] == '(' )
    {
        i++;
        rez = eval();
        i++;
    }
    else
    {
        rez = get_nr();
    }
    return rez;
}
int main()
{
    citire();
    out<<eval();
    return 0;
}