Cod sursa(job #3352899)

Utilizator Moisiuc_MateiMoisiuc Matei Moisiuc_Matei Data 2 mai 2026 13:56:06
Problema Evaluarea unei expresii Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.55 kb
#include <bits/stdc++.h>
#define parantezadeschisa 2000000000
#define parantezainchisa -2000000000
using namespace std;

ifstream in("evaluare.in");
ofstream out("evaluare.out");
int k,i;
string s;
stack <int> c;

int extragerenr()
{
    int nr=0;
    while(isdigit(s[i]))
    {
        nr=nr*10+s[i]-'0';
        i++;
    }
    return nr;
}
int main()
{
    int sum=0,msp=1,nr1,nr2,sump;
    in>>s;
    for(i=0;i<s.length();i++)
    {
        if(s[i]=='-')
        {
            msp=-1;
        }
        else if(s[i]=='+')
        {
            msp=1;
        }
        else if(s[i]=='(')
        {
            c.push(parantezadeschisa);
        }
        else if(s[i]==')')
        {
            sump=0;
            while(c.top()!=parantezadeschisa)
            {
                sump+=c.top();
                c.pop();
            }
            c.pop();
            c.push(sump);
        }
        else if(isdigit(s[i]))
        {
            c.push(extragerenr()*msp);
            i--;
            msp=1;
        }
        else if(s[i]=='*')
        {
            nr1=c.top();
            i++;
            nr2=extragerenr();
            i--;
            c.pop();
            c.push(nr1*nr2);
        }
        else if(s[i]=='/')
        {
            nr1=c.top();
            i++;
            nr2=extragerenr();
            i--;
            c.pop();
            c.push(nr1/nr2);
        }
    }
    while(c.empty()==false)
    {
        sum+=c.top();
        c.pop();
    }
    out<<sum;
    return 0;
}