Cod sursa(job #2982494)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 20 februarie 2023 13:04:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
#include <vector>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <functional>
#include <cassert>
using namespace std;
string s;
int p;
int par();
int sum();
int produs();

int sum()
{
    int rez=produs();
    while(s[p]=='+' || s[p]=='-')
    {
        if(s[p]=='+')
        {
            p++;
            rez+=produs();
        }
        else
        {
            p++;
            rez-=produs();
        }
    }
    return rez;
}
int produs()
{
    int rez=par();
    while(s[p]=='*' || s[p]=='/')
    {
        if(s[p]=='*')
        {
            p++;
            rez*=par();
        }
        else
        {
            p++;
            rez/=par();
        }
    }
    return rez;
}
int par()
{
    int sign=1;
    if(s[p]=='-')
    {
        sign=-1;
        p++;
    }
    int nr=0;
    if(s[p]=='(')
    {
        p++;
        nr=sum();
        p++;
        return nr*sign;
    }
    while(isdigit(s[p]))
    {
        nr=nr*10+s[p]-'0';
        p++;
    }
    return nr*sign;
}
void solve()
{
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin>>s;
    s=s+' ';
    cout<<sum();
}
main()
{
    auto sol=[](bool x)->string
    {
        if(x)return "Yes";
        return "No";
    };
    int tt=1;
    while(tt--)
    {
        solve();
    }
}