—— Deadline 2016/04/14 22:00——
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
计算器第二部分-->开始计算啦!
必须在你们第一部分代码的基础上进行添加和修改。
-
这次不在运行后再进行输入,而是使用调用的方式。
也就是在命令行里(如windows下的cmd),输入calculator.exe -10000+20-3*(20+2)
来得出结果。例如:
当然,结合下面的第二点,最终是要输出计算结果的。你可以如上面截图所示,先进行测试。
提示:
int main(int argc, char* argv[])
-
新建一个Calculation类,添加一个用来计算表达式的方法。
- 将从Scan中返回的queue传入类Calculation中用来计算的方法,在这个方法里进行计算,并返回结果。
- 如果这个方法里的代码太多,则把可以提取出来的代码,作为一个新方法提取出来,然后调用。
- 要求使用两个栈来处理(这里要使用
<stack>
):一个存放数值,一个存放符号。从队列中读取字符串,并分别放入对应的栈中。 - 注意对负数的处理。
- 注意对优先级的处理。
- 使用
<sstream>
将字符串转换为数字。
-
最终要在命令行中调用编译好的可执行文件(如windows的.exe文件),并传入参数以获得结果。如下图,对于Calculator.exe这个可执行文件:
- 注意,不是在编译器上点击运行,而是在命令行中调用编译后的文件。
- 注意,处理的时候,输入可能会有一个参数
-a
。如果加入这个参数,则需要把式子也输出,等号后加一个空格。如下图所示:
本次作业目的:
- 体会在已有的代码上继续开发。
- 了解如何给可执行程序传参。主要还是要知道当你们使用
git add
这些命令的时候,程序是如何解析的。 - 了解栈
<stack>
和<sstream>
的使用。知道可以调用已有的库函数来解决某些问题。