int main()
{
int len=0,i=0,j;
int m,n,result;
char op;
int number=0;
char enter[100];
int s1[100],top1=0,top2=0;
char s2[100];
s2[top2]='(';top2++;
scanf("%s",enter);
for(i=0;i<strlen(enter);i++)
{
if(enter[i]>='0' && enter[i]<='9')
{
if (enter[i+1]>='0' && enter[i+1]<='9')
number=10*number+enter[i]-'0';
else
{
s[len].index=1;
s[len].a=10*number+enter[i]-'0';
s[len].b='0';
len++;
number=0;
}
}
else
{
s[len].index=0;
s[len].a=0;
s[len].b=enter[i];
len++;
}
/*printf("len@=%d,i=%d\n",len,i); */
}
if (enter[strlen(enter)-1]!='=')
{
s[len].index=0;
s[len].a=0;
s[len].b='=';
len++;
}
for(i=0;i<len;i++)
{
if (s[i].b=='=')
{
while(top1!=1)
{
m=s1[top1-1];
top1--;
n=s1[top1-1];
top1--;
op=s2[top2-1];
top2--;
result=oper(n,m,op);
s1[top1]=result;
top1++;
}
printf("%d\n",s1[top1-1]);
break;
}
if (s[i].b==')')
{
while(s2[top2-1]!='(')
{
m=s1[top1-1];
top1--;
n=s1[top1-1];
top1--;
op=s2[top2-1];
top2--;
result=oper(n,m,op);
s1[top1]=result;
top1++;
}
top2--;
}
else
{
if(s[i].index==1)
{
s1[top1]=s[i].a;
top1++;
}
else
{
if (comp1(s[i].b,s2[top2-1])==1)
{
s2[top2]=s[i].b;
top2++;
}
else
{
if(comp2(s[i].b,s2[top2-1])==0)
{
m=s1[top1-1];
top1--;
n=s1[top1-1];
top1--;
op=s2[top2-1];
top2--;
result=oper(n,m,op);
s1[top1]=result;
top1++;
}
s2[top2]=s[i].b;
top2++;
}
}
}
/*
if (s[i].index==1)
{
for (j=0;j<top1;j++)
printf("%d ",s1[j]);
printf("\n");
}
if (s[i].index==0)
{
for (j=0;j<top2;j++)
printf("%c ",s2[j]);
printf("\n");
}
*/
}
getch();
}
正文
表达式求值II(只对整数有效)2005-08-13 17:53:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/elva6401/3773.html
阅读(2715) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论