Pagini recente » Cod sursa (job #1146445) | Cod sursa (job #191475) | Cod sursa (job #2346492) | Cod sursa (job #1229849) | Cod sursa (job #379554)
Cod sursa(job #379554)
#include<fstream.h>
char s[101000],b[101000];
int n,i,j,k,ps,a[101000],u,rez[101000];
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f.getline(s,101000);
n=strlen(s);
u=(1<<30);
while(i<n)
{
if(48<=s[i]&&s[i]<=57)
{
j++;
while(48<=s[i]&&s[i]<=57)
a[j]=a[j]*10+s[i++]-48;
i--;
}
else
if(s[i]==40)
b[++k]=s[i];
else
if(s[i]==41)
{
ps=0;
while(!ps)
{
if(b[k]==40)
ps=1;
else
a[++j]=b[k]+u;
k--;
}
}
else
{
if(s[i]==45)
while(b[k]==47||b[k]==42||b[k]==43||b[k]==45)
a[++j]=b[k--]+u;
else
if(s[i]==43)
while(b[k]==42||b[k]==45||b[k]==47)
a[++j]=b[k--]+u;
else
if(s[i]==42)
while(b[k]==47)
a[++j]=b[k--]+u;
else
while(b[k]==42||b[k]==47)
a[++j]=b[k--]+u;
b[++k]=s[i];
}
i++;
}
for(i=k;i;i--)
a[++j]=b[i]+u;
i=1;
k=0;
while(i<=j)
{
rez[++k]=a[i];
if(k>2&&rez[k-1]<u&&rez[k-2]<u&&rez[k]>u)
{
if(rez[k]==u+42)
rez[k-2]=rez[k-2]*rez[k-1];
else
if(rez[k]==u+43)
rez[k-2]=rez[k-2]+rez[k-1];
else
if(rez[k]==u+45)
rez[k-2]=rez[k-2]-rez[k-1];
else
rez[k-2]=rez[k-2]/rez[k-1];
k-=2;
}
i++;
}
g<<rez[1];
return 0;
}