Cod sursa(job #3134867)

Utilizator matei8787Matei Dobrea matei8787 Data 31 mai 2023 17:15:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include<bits/stdc++.h>
using namespace std;
int i;
string s;
int constanta();
int factor();
int expresie();
int termen();
int constanta()
{
    int ans = 0;
    while ( s[i] >= '0' && s[i] <= '9' )
    {
        ans = ans * 10 + (s[i] - '0');
        i++;
    }
    return ans;
}
int termen()
{
    int ans = factor();
    while ( s[i] == '*' || s[i] == '/' )
    {
        if ( s[i] == '*' )
        {
            i++;
            ans *= factor();
        }
        else
        {
            i++;
            ans /= factor();
        }
    }
    return ans;
}
int factor()
{
    int ans;
    if ( s[i] == '(' )
    {
        i++;
        ans = expresie();
        i++;
    }
    else
    {
        ans = constanta();
    }
    return ans;
}
int expresie()
{
    int ans = termen();
    while ( s[i] == '+' || s[i] == '-' )
    {
        if ( s[i] == '+' )
        {
            i++;
            ans += termen();
        }
        else
        {
            i++;
            ans -= termen();
        }
    }
    return ans;
}
int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    cin>>s;
    i = 0;
    cout<<expresie();
}