Cod sursa(job #3302245)

Utilizator AlexRocaRoca Alexandru AlexRoca Data 5 iulie 2025 10:59:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int indice=0;

long long expr();

long long factor()
{
    long long rez=0;
    if (s[indice]=='(')
    {
        indice++;
        rez=expr();
        indice++;
        return rez;
    }
    while (indice<s.size() && s[indice]>='0' && s[indice]<='9')
    {
        rez=rez*10+s[indice]-'0';
        indice++;
    }
    return rez;
}
long long termen()
{
    long long rez=factor();
    while (indice<s.size() && (s[indice]=='*' || s[indice]=='/'))
    {
        if (s[indice]=='*')
        {
            indice++;
            rez*=factor();
        }
        else
        {
            indice++;
            rez/=factor();
        }
    }
    return rez;
}

long long expr()
{
    long long rez=termen();
    while (indice<s.size() && (s[indice]=='+' || s[indice]=='-'))
    {
        if (s[indice]=='+')
        {
            indice++;
            long long termen2=termen();
            rez+=termen2;
        }
        else if (s[indice]=='-')
        {
            indice++;
            long long termen2=termen();
            rez-=termen2;
        }
    }
    return rez;
}

int main()
{
    cin>>s;
    cout<<expr();
}