这题考查两个点
1、先将算术表达式转换成后缀表达式,转换原理可以参考这个博客,写得非常详细http://blog.csdn.net/antineutrino/article/details/6763722
2、再对后缀表达式这里算值。
小心:
这里输入必须要整行读入,因为表达式中可能会揉进一些空格和tab,所以使用cin读入会出错。
另外,混合使用cin和cin.getline时,使用cin之后,会在缓冲区留下一个换行,会被下面的cin.getline吃掉,所以第一个cin.getline无法读到正确的数据,必须中间执行一次cin.ignore(),清空缓冲区。
代码如下:
//by werflychen 2013-12-21
#include <iostream>
#include <string>
#include <stack>
using namespace std;
inline bool IsLegal(char ch)
{
if (ch == '+' || ch == '-' || ch == '*' || ch == '(' || ch == ')'
|| (ch >= '0' && ch <= '9') || (ch >= &