Pagini recente » Cod sursa (job #2260731) | Cod sursa (job #2751724) | Cod sursa (job #2445056) | Cod sursa (job #2351131) | Cod sursa (job #683170)
Cod sursa(job #683170)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<stdio.h>
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
int main()
{
int st1[100000],st2[100000],v[100000],vf1=0,vf2=0,i,j,k=0,x=0,k1=0,ok=0;
char nr[9],c;
while(!feof(f))
{
fscanf(f,"%c",&c);
if(c>='0'&&c<='9')
{
x=x*10+c-'0';ok=1;
}
else
{
if(ok==1)
{
v[++k1]=x;
x=0;
ok=0;
}
if(c=='*')
{
while(st1[vf1]==-1||st1[vf1]==-2)
v[++k1]=st1[vf1--];
st1[++vf1]=-1;
}
if(c=='/')
{
while(st1[vf1]==-1||st1[vf1]==-2)
v[++k1]=st1[vf1--];
st1[++vf1]=-2;
}
if(c=='(')
st1[++vf1]=-5;
if(c=='+'||c=='-')
{
while((vf1>0)&&(st1[vf1]==-2||st1[vf1]==-1||st1[vf1]==-3||st1[vf1]==-4))
{
v[++k1]=st1[vf1--];
}
if(c=='+')
st1[++vf1]=-3;
else
st1[++vf1]=-4;
}
if(c==')')
{
while((vf1>0)&&st1[vf1]!=-5)
v[++k1]=st1[vf1--];
vf1--;
}
}
}
while(vf1!=0)
v[++k1]=st1[vf1--];
for(i=1;i<=k1;i++)
{
if(v[i]>=0)
st2[++vf2]=v[i];
else
{
if(v[i]==-1)
st2[vf2-1]=st2[vf2-1]*st2[vf2];
if(v[i]==-2)
st2[vf2-1]=st2[vf2-1]/st2[vf2];
if(v[i]==-3)
st2[vf2-1]=st2[vf2-1]+st2[vf2];
if(v[i]==-4)
st2[vf2-1]=st2[vf2-1]-st2[vf2];
vf2--;}
}
fprintf(g,"%d",st2[1]);
}