Pagini recente » Cod sursa (job #2591328) | Cod sursa (job #3293930) | Cod sursa (job #1323392) | Cod sursa (job #3288659) | Cod sursa (job #1139396)
#include<fstream>
#include<cstring>
using namespace std;
char st_op[100002],s[100002];
int st_nr[100002],kop,knr,n,nr,i,j,j1,j2,k;
fstream fin,fout;
int main()
{
ifstream fin("Test2.in");
ofstream fout("Test2.out");
st_op[1]='(';
kop=1;
knr=0;
fin.get(s,100001);
n=strlen(s);
s[n]=')';
s[n+1]=0;
n++;
for(i=0;i<n;i++)
{
if(strchr("+-*/(",s[i])!=0)
{
kop++;
st_op[kop]=s[i];
}
else
if(s[i]>='0' && s[i]<='9')
{
nr=s[i]-'0';
j=i;
while(s[j+1]>='0' && s[j+1]<='9')
{
j=j+1;
nr=nr*10 +(s[j]-'0');
}
if(st_op[kop]=='*')
{
st_nr[knr]=st_nr[knr]*nr;
kop--;
}
else
if(st_op[kop]=='/')
{
st_nr[knr]=st_nr[knr]/nr;
kop--;
}
else
{
knr++;
st_nr[knr]=nr;
}
i=j;
}
else
{
j1=kop;
j2=knr;
while(st_op[j1]!='(')
{
j1--;
j2--;
}
k=j2+1;
nr=st_nr[j2];
for(j=j1+1;j<=kop;j++)
{
if(st_op[j]=='+')
{
nr=nr+st_nr[k];
}
else
{
nr=nr-st_nr[k];
}
k++;
}
kop=j1-1;
knr=j2-1;
if(st_op[kop]=='*')
{
st_nr[knr]=st_nr[knr]*nr;
kop--;
}
else
if(st_op[kop]=='/')
{
st_nr[knr]=st_nr[knr]/nr;
kop--;
}
else
{
knr++;
st_nr[knr]=nr;
}
}
}
fout<<st_nr[1];
fin.close();
fout.close();
return 0;
}