C++代码 & 中缀表达式转换为后缀表达式

来源:百度知道 编辑:UC知道 时间:2024/05/18 14:29:16
是什么原因致使输入 4+7 而不会输出 47- 啊?该怎么修改?
1、代码如下:

//该程序作用是将一中缀表达式转换成后缀表达式,如输入5-2,正常运行将输出52-

#include<iostream>
#include<exception>

using std::cin;
using std::cout;
using std::cerr;
using std::exception;
//简单的异常处理类
class synException:public exception {
public:
synException():exception("输入有误!请检查输入的是否为 数位 与操作符'+'与'-'的字符序列") { }
};
//类parser
class parser
{
public:
static int lookahead;

public:
parser();
void match(int t);
void term();
void expr();

};

//静态变量初始化,没有初始化的话,可以成功组建但会出现编译错误
int parser::lookahead=0;

parser::parser()
{
cout<<"\n 输入一个中缀表达式:";
cin>>lookahead; }
void parser::match(int t)
{
if( lookahead==t)
cin>>lookahead;
else
throw synException();
}
void parser::term()

lookahead 是个int 型的, cin会将输入的字符转换成一个整型数给lookahead ,也就是说当你输入4+7时, lookahead 就被赋予了数 4 。

在 if(isdigit( (char)lookahead ) ) 判断时 将数4 转换为字符, 就肯定不是逻辑4了。

算法也有问题。没有对表达式的结尾做判断。

lookahead是int类型不能和'+'作比较的吧