用c++实现一个计算器,支持整数、小数的加减乘除四则运算,允许表达式中出现括号。这里默认输入数据均为格式正常表达式,结果精确到小数点后三位。具体解释详见代码注释。
#include <iostream>
#include <list>
#include <sstream>
#include <iomanip>
using namespace std;
struct Token {
string text;
Token(string text) : text(text) {}
double doubleValue() {
stringstream ss(text);
double value;
ss >> value;
return value;
}
};
class Parser {
struct Tree {
Token token;
Tree * left;
Tree * right;
Tree(Token token) : token(token) {
left = 0;
right = 0;
}
~Tree() {
if (left != 0) delete left;
if (right != 0) delete right;
}
};
Tree * expression;
double result;
static double execute(Tree * expression) {
if (expression->left == 0) {
return expression->token.doubleValue();
} else {