您好、欢迎来到现金彩票网!
当前位置:秒速快3 > 输入优先级 >

数学表达式优先级求值问题。看一下算法有什么问题?运行的时候输

发布时间:2019-06-07 06:17 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  #include#include#include#defineerror0#defineok1#defineoverflow-1#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#defineOPSETSIZE7charOPSET[OPSETSIZE]={+,-,*,/,(,),#};unsignedcharPrior[7][7]={//算符间的优先关系,,,,,,,,,,,,,,,,,,,,,,,,,,,structSqStack{T*top;T*base;intstacksize;};//顺序栈结构模板S.base;S.stacksize=STACK_INIT_SIZE;returnok;}//初始化栈函数模板templateStatusPush(T1&S,T2e){if(S.top-S.base=S.stacksize){S.base=(T2*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(T2));if(!S.base)exit(overflow);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;returnok;}//入栈函数模板templateStatusPop(T1&S,T2&e){if(S.top==S.base)returnerror;e=*--S.top;returnok;}//出栈函数模板templateT2GetTop(T1S){if(S.top==S.base)returnerror;elsereturn*(S.top-1);}//获取栈顶元素模板StatusIn(charTest,char*TestOp){boolFind=false;for(inti=0;iOPTR;//运算符栈,字符元素SqStackOPND;//运算数栈,实数元素charTempData[20];floatData,a,b;chartheta,c,x,Dr[2];InitStack,char(OPTR);Push(OPTR,#);InitStack,float(OPND);strcpy(TempData,0);//将TempData置为空c=getchar();while(c!=#GetTop,char(OPTR)!=#){if(!In(c,OPSET)){Dr[0]=c;Dr[1]=0;//存放单个数strcat(TempData,Dr);//将单个数连到TempData中,形成字符串c=getchar();if(In(c,OPSET))//如果遇到运算符,则将字符串TempData转换成实数,入栈,并重新置空{Data=(float)atof(TempData);Push(OPND,Data);strcpy(TempData,0);}}else{//不是运算符则进栈switch(precede(GetTop,char(OPTR),c)){case://退栈并将运算结果入栈Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b));break;}//switch}}//whilereturnGetTop,float(OPND);}//EvaluateExpressionvoidmain(){printf(请输入表达式(end#):n);printf(%fn,EvaluateExpression());}给你一个完全的程序,本人自己写的。

http://moserfarmshomes.com/shuruyouxianji/274.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有