资源描述:
《算术表达式求值03325》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、算术表达式求值03325//*************************************************************************************************************************//040640208霍瑛//算数表达式求解//实现正整数的+-*/运算,以及验证表达式输入正误的功能//2007-1-2//*************************************************************************************
2、************************************#include#include#include#include#defineSTACK_INIT_SIZE100;//存储空间初始分配量#defineSTACKINCREMENT10;//存储空间分配增量//*****************************************************************************************************
3、********************//类模版定义templateclassSqStack{private:T*base;T*top;intstacksize;public:SqStack();//建立一个新栈Push(Te);//压入一个新数据GetTop();//取得最上面的数据Pop();//弹出最上面的数据};templateSqStack::SqStack(){base=(T*)malloc(100*sizeof(T));if(!base)exit(0);//分配内存失败top=base;stacksize=
4、100;}templateintSqStack::GetTop(){Te;if(top==base)return0;//栈空的情况e=*(top-1);returne;}templateintSqStack::Pop(){Te;if(top==base)return0;//栈空的情况e=*--top;returne;}templateintSqStack::Push(Te){if(top-base>=stacksize)//栈满的情况{base=(T*)realloc(base,(stacksi
5、ze+10)*sizeof(T));//追加空间if(!base)exit(0);//空间分配失败top=base+stacksize;stacksize+=STACKINCREMENT;//每次添加STACKINCREMENT的空间}*top++=e;return1;}//************************************************************************************************************************//基本函数定义intIsnum(chare)//
6、判断是否是数字{if(e>='0'&&e<='9')return1;elsereturn0;}intPrimary(charx)//返回符号对应的数值{inte=-1;switch(x){case'+':e=0;break;case'-':e=1;break;case'*':e=2;break;case'/':e=3;break;case'(':e=4;break;case')':e=5;break;case'#':e=6;break;}if(e==-1){cout<<"输入表达式含不规范字符!"<7、ede(charx,chary)//符号优先级定义{intnum[7][7]={{1,1,-1,-1,-1,1,1},{1,1,-1,-1,-1,1,1},{1,1,1,1,-1,1,1},{1,1,1,1,-1,1,1},{-1,-1,-1,-1,-1,0,2},{1,1,1,1,2,1,1},{-1,-1,-1,-1,-1,2,0}};inta,b;a=Primary(x);b=Primary(y);returnnum[a][b];}intOperate(inta,charthera,intb){if(thera=='+')return(a+b);if(t
8、hera=='-')return(a-