Pagini recente » Cod sursa (job #914565) | Cod sursa (job #395503) | Cod sursa (job #107231) | Cod sursa (job #2301657) | Cod sursa (job #683377)
Cod sursa(job #683377)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int st[100001],v[100001],k=0,vf=0,st1[100001],vf1=0,i,m,a,ok=0;
char c;
int main()
{
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
while(!feof(f))
{
fscanf(f,"%c",&c);
if(c>='0'&&c<='9')
{
m=m*10+c-'0';ok=1;
}
else
{
if(ok==1)
{
v[++k]=m;
m=0;
ok=0;
}
if(c=='(')st[++vf]=-5;
if(c=='+'||c=='-')
{
while((vf>0) && (st[vf]==-1||st[vf]==-4||st[vf]==-2||st[vf]==-3))
{
v[++k]=st[vf];
vf--;
}
if(c=='+')a=-2;
else a=-3;
st[++vf]=a;
}
if(c=='*'){while(vf>0&&(st[vf]==-1||st[vf]==-4)){v[++k]=st[vf];vf--;}st[++vf]=-1;}
if(c=='/'){while(vf>0&&(st[vf]==-1||st[vf]==-4)){v[++k]=st[vf];vf--;}st[++vf]=-4;}
if(c==')')
{
while(vf>0 && st[vf]!=-5)
{
v[++k]=st[vf];
vf--;
}
vf--;
}
}
}
for(i=vf;i>=1;i--)v[++k]=st[i];
for(i=1;i<=k;i++)
{
if(v[i]>=0)st1[++vf1]=v[i];
else
{
if(v[i]==-1){m=st1[vf1]*st1[vf1-1];vf1--;st1[vf1]=m;}
if(v[i]==-2){m=st1[vf1]+st1[vf1-1];vf1--;st1[vf1]=m;}
if(v[i]==-3){m=st1[vf1-1]-st1[vf1];vf1--;st1[vf1]=m;}
if(v[i]==-4){m=st1[vf1-1]/st1[vf1];vf1--;st1[vf1]=m;}
}
}
fprintf(g,"%d",st1[vf1]);
fclose(f);
fclose(g);
}