中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 例子
表达式运算器的实现原理(快速优先法)
作者:njhhack 时间:2001-10-14 10:19 出处:互联网 责编:chinaitpower
              摘要:表达式运算器的实现原理(快速优先法)
int scan(char *src,float *num,char *sign,int *level)
{
int count=0,stdlevel=0;
while(*src)
{
if(*src=='(')stdlevel+=2;
if(*src==')')stdlevel-=2;
if(*src=='+' || *src=='-'){sign[count]=*src;level[count]=stdlevel;}
if(*src=='*' || *src=='/'){sign[count]=*src;level[count]=stdlevel+1;}
if(*src>='0' && *src<='9')
{
num[count]=0;
while(*src>='0' && *src<='9')
{
num[count]=num[count]*10+*src-'0';src++;
}
count++;src--;
}
src++;
}
return count;
}
float exp(int index,float *num,char *sign,int *level)
{
int k;
float mid,left,right;
if(index<2)mid=num[0];
else if(index<3){left=num[0];right=num[1];k=1;}
else
{
int min=25536,d;
k=index-1;
for(d=index-1;d>0;d--)if(min>level[d]){min=level[d];k=d;}
if(k>=2)left=exp(k,num,sign,level);
else left=num[k-1];
if(index-k>=2)right=exp(index-k,num+k,sign+k,level+k);
else right=num[index-1];
}
switch(sign[k])
{
case '+':mid=left+right;break;
case '-':mid=left-right;break;
case '*':mid=left*right;break;
case '/':mid=left/right;break;
}
return mid;
}

main()
{
char sign[100],*src="1+2*(2*(5-2)-4)/2";/*"(1+2)*3-(4-5*(6/(7+8)-9))*10-11/12";*/
int count=0,k,level[100];
float num[100],last;
count=scan(src,num,sign,level);
last=exp(count,num,sign,level);
clrscr();
printf("\nlast=%6.2f",last);
for(k=0;k<count;k++)
{
gotoxy(k*5+1,4);
printf("%3.0f",num[k]);
if(k>=count-1)continue;
gotoxy(k*5+5,5);
printf("%1c",sign[k+1]);
gotoxy(k*5+4,6);
printf("%2d",level[k+1]);
}
getch();
}
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有