Pagini recente » Cod sursa (job #1586056) | Istoria paginii runda/infinity-2022-10/clasament | Cod sursa (job #1078412) | Cod sursa (job #2059547) | Cod sursa (job #2128049)
#include<fstream>
#include<cstring>
#include<cctype>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
const int nmax=100000;
char s[nmax+5];
int n;
int stiva_nr[nmax+5],vf_nr;
int stiva_semne[nmax+5],vf_semne;
int main()
{
cin.getline(s,nmax+5);
n=strlen(s);
for(int i=0;i<n;i++)
{
if(isdigit(s[i]))
{
if(i==0 or !isdigit(s[i-1]))
stiva_nr[++vf_nr]=s[i]-'0';
else
stiva_nr[vf_nr]=stiva_nr[vf_nr]*10+s[i]-'0';
}
if(s[i]=='(')
stiva_semne[++vf_semne]='(';
if(s[i]==')')
{
while(stiva_semne[vf_semne]!='(')
{
vf_nr--;
if(stiva_semne[vf_semne]=='+')
stiva_nr[vf_nr]+=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='-')
stiva_nr[vf_nr]-=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='*')
stiva_nr[vf_nr]*=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='/')
stiva_nr[vf_nr]/=stiva_nr[vf_nr+1];
vf_semne--;
}
vf_semne--;
}
if(s[i]=='*' or s[i]=='/')
{
while(vf_semne and (stiva_semne[vf_semne]=='*') or (stiva_semne[vf_semne]=='/'))
{
vf_nr--;
if(stiva_semne[vf_semne]=='*')
stiva_nr[vf_nr]*=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='/')
stiva_nr[vf_nr]/=stiva_nr[vf_nr+1];
vf_semne--;
}
stiva_semne[++vf_semne]=s[i];
}
if(s[i]=='+' or s[i]=='-')
{
while(vf_semne and stiva_semne[vf_semne]!='(')
{
vf_nr--;
if(stiva_semne[vf_semne]=='+')
stiva_nr[vf_nr]+=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='-')
stiva_nr[vf_nr]-=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='*')
stiva_nr[vf_nr]*=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='/')
stiva_nr[vf_nr]/=stiva_nr[vf_nr+1];
vf_semne--;
}
stiva_semne[++vf_semne]=s[i];
}
}
while(vf_semne)
{
vf_nr--;
if(stiva_semne[vf_semne]=='+')
stiva_nr[vf_nr]+=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='-')
stiva_nr[vf_nr]-=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='*')
stiva_nr[vf_nr]*=stiva_nr[vf_nr+1];
if(stiva_semne[vf_semne]=='/')
stiva_nr[vf_nr]/=stiva_nr[vf_nr+1];
vf_semne--;
}
cout<<stiva_nr[1];
return 0;
}
/**
**/