[键入文字] [键入文字] [键入文字]
过堆栈方法将这个中缀表达式转化为后缀表达式,然后将后缀表达式求值。
有 错 输出“表达 式有错” 函数清单: 开始程序 输入一个检查表达式没有错误 转化为后缀表达式 计算求值 输出结果 是否否 退出-3- 程序是 [键入文字] [键入文字] [键入文字]
transform()——用于将中缀表达式转换为后缀表达式 calculate()——将后缀表达式进行求值 examine()——检查输入的表达式是否有错误 main()——主程序。
五:源程序清单:
#include
string transform(string str)//转换为后缀表达式 {
stack
string exp=\;
for(i=0;i if(str[i]=='.'||isdigit(str[i])) { -4- [键入文字] [键入文字] [键入文字] } exp+=str[i]; else if(str[i]=='+'||str[i]=='-') { int j=i-1; if(isdigit(str[j])) { exp+=\;//每个数字的后面都加一个空格加以区分 if(ope.empty()||ope.top()=='(') { } else { while(!ope.empty()&&ope.top()!='(') { } ope.push(str[i]); exp+=ope.top(); ope.pop(); ope.push(str[i]); -5- [键入文字] [键入文字] [键入文字] } } } else { { } else { } } while(!ope.empty()&&ope.top()!='(') { } ope.push(str[i]); exp+=ope.top(); ope.pop(); ope.push(str[i]); if(ope.empty()||ope.top()=='(') else if(str[i]=='*'||str[i]=='/'||str[i]=='%') -6-
相关推荐: