Cod sursa(job #3368266)

Utilizator david333Popescu David david333 Data 14 octombrie 2026 08:42:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char s[100005];
int ind;
int expresie();
int termen();
int factor();
int numar();
int expresie()
{
    int ans=termen();
    while (s[ind]=='+'||s[ind]=='-')
    {
        if (s[ind]=='+')
        {
            ind++;
            ans=ans+termen();
        }
        else if (s[ind]=='-')
        {
            ind++;
            ans=ans-termen();
        }
    }
    return ans;
}
int termen()
{
    int t=factor();
    while (s[ind]=='*'||s[ind]=='/')
    {
        if (s[ind]=='*')
        {
            ind++;
            t=t*factor();
        }
        else if (s[ind]=='/')
        {
            ind++;
            t=t/factor();
        }
        //cout<<t<<'\n';
    }
    return t;
}
int factor()
{
    int f;
    if (s[ind]=='(')
    {
        ind++;
        f=expresie();
        ind++;
    }
    else f=numar();
    return f;
}
int numar()
{
    int num=0;
    while (s[ind]>='0'&&s[ind]<='9')
    {
        int cifra=s[ind]-'0';
        num=num*10+cifra;
        ind++;
    }
    return num;
}
int main()
{
    cin.getline(s,100005);
    cout<<expresie();
    return 0;
}