Pagini recente » Cod sursa (job #2299267) | Cod sursa (job #2780296) | Cod sursa (job #2636403) | Cod sursa (job #1914807) | Cod sursa (job #682434)
Cod sursa(job #682434)
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.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,k1=0;
char s[100001],nr[9];
fscanf(f,"%s",&s);
for(i=0;i<=strlen(s);i++)
{
if(s[i]>='0'&&s[i]<='9')
nr[k++]=s[i];
else
{
nr[k]='\0';
if(k>0)
{
k=0;
x=atoi(nr);
v[++k1]=x;
}
if(s[i]=='*')
st1[++vf1]=-1;
if(s[i]=='/')
st1[++vf1]=-2;
if(s[i]=='(')
st1[++vf1]=-5;
if(s[i]=='+'||s[i]=='-')
{
while(st1[vf1]==-2||st1[vf1]==-1)
{
v[++k1]=st1[vf1--];
}
if(s[i]=='+')
st1[++vf1]=-3;
else
st1[++vf1]=-4;
}
if(s[i]==')')
{
while(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]);
}