[C++]利用逆波兰式,简单实现下加减乘除的混合运算
2016-11-13 20:08
579 查看
测试代码
此处显示之前逆波兰式求法后的增量代码!http://blog.csdn.net/u010989191/article/details/53135563
//简单加减乘除法运算 因为数据是放在堆栈中 所以前一个操作数是opB 后一个操作数是opA int simpleCalculate(int opA, int opB, char op) { switch (op) { case '+': return opB + opA; case '-': return opB - opA; case '*': return opB * opA; case '/': return opB / opA; default: return 0; } } //计算表达式的值 int calculate(string polish) { stack<int> values; bool lastIsNum = false; for (int i = 0; i < polish.length(); i++) { char c = polish.at(i); if (c == ' ') { lastIsNum = false; continue; } else if (c >= '0'&&c <= '9') { if (lastIsNum) { int last = values.top(); values.pop(); last = last * 10 + (c - '0'); values.push(last); } else { values.push(c - '0'); lastIsNum = true; } } else { lastIsNum = false; int opA = values.top(); values.pop(); int opB = values.top(); values.pop(); int calResult = simpleCalculate(opA, opB, c); values.push(calResult); } } return values.top(); } int main() { string str; cout << "请输入表达式: "; cin >> str; string result = reversePolish(str); cout << result << endl; int calResult = calculate(result); cout << "计算结果: " << calResult << endl; system("pause"); return 0; }
测试结果
相关文章推荐
- [C++]利用逆波兰式,简单实现下加减乘除的混合运算
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 再探利用C++的STL和堆栈编程思想实现数学四则运算计算结果
- 大整数类加减乘除的简单实现——C++
- 用C++实现简单地多项式运算。(因为是菜鸟,会有一些漏洞)
- c++利用winapi实现简单多线程
- Windows Phone 8 学习志(探索问题一:如何简单利用Windows Phone Runtime Component项目类型实现C#和C++交互)
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- java 实现加减乘除混合运算
- 利用C++日期类实现简单的日期计算器
- 简单四则运算计算器的C++实现(含括号和+-*/的优先级判断)
- loner_li 机试题 编写一个简单的计算器实现加减乘除:输入两个数字和一个运算符号,输出结果(注意容错性)
- 使用Object-c类实现简单地加减乘除运算
- 第六次作业——利用MFC实现计算器图形界面以及简单四则运算表达式批处理
- C++ 通过main()函数输入参数,实现简单的四则运算
- 初探利用C++的STL实现数学四则运算计算结果
- 用C\C++实现离散数学简单逻辑运算
- 正整数加减乘除四则混合运算求值方法 java实现
- 利用C++日期类实现简单的日期计算器
- 利用栈实现计算器,先转换为逆波兰式之后运算