Cod sursa(job #3311535)

Utilizator Andrada_MincaAndrada Minca Andrada_Minca Data 23 septembrie 2025 09:23:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
//
//  main.cpp
//  Evaluarea unei expresii
//
//  Created by Andrada Minca on 23.09.2025.
//

#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int i=0;
int expresie(string &s);
int termen(string &s);
int factor(string &s);
int numar(string &s);
int expresie(string &s)
{
    int ans=termen(s);
    while(s[i]=='+'||s[i]=='-')
    {
        if(s[i]=='+'){i++;ans+=termen(s);}
        else {i++;ans-=termen(s);}
    }
    return ans;
}
int termen(string &s)
{
    int ans=factor(s);
    while(s[i]=='*'||s[i]=='/')
    {
        if(s[i]=='*'){i++;ans*=factor(s);}
        else {i++;ans/=factor(s);}
    }
    return ans;
}
int factor(string &s)
{
    int ans;
    if(s[i]=='('){i++;ans=expresie(s);i++;}
    else ans=numar(s);
    return ans;
}
int numar(string &s)
{
    int ans=0;
    while(s[i]>='0'&&s[i]<='9')
    {
        ans=ans*10+s[i]-'0';
        i++;
    }
    return ans;
}
int main()
{
    string s;
    cin>>s;
    cout<<expresie(s);
    return 0;
}