代码改变世界

第四次作业(计算器第二步)

2016-03-27 20:21  面向对象程序设计课  阅读(929)  评论(0编辑  收藏  举报

—— Deadline 2016/04/14 22:00——

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

计算器第二部分-->开始计算啦!

必须在你们第一部分代码的基础上进行添加和修改。

  1. 这次不在运行后再进行输入,而是使用调用的方式。
    也就是在命令行里(如windows下的cmd),输入 calculator.exe -10000+20-3*(20+2) 来得出结果。例如:

    当然,结合下面的第二点,最终是要输出计算结果的。你可以如上面截图所示,先进行测试。

    提示:int main(int argc, char* argv[])

  2. 新建一个Calculation类,添加一个用来计算表达式的方法。

    • 将从Scan中返回的queue传入类Calculation中用来计算的方法,在这个方法里进行计算,并返回结果。
    • 如果这个方法里的代码太多,则把可以提取出来的代码,作为一个新方法提取出来,然后调用。
    • 要求使用两个栈来处理(这里要使用<stack>):一个存放数值,一个存放符号。从队列中读取字符串,并分别放入对应的栈中。
    • 注意对负数的处理。
    • 注意对优先级的处理。
    • 使用<sstream>将字符串转换为数字。
  3. 最终要在命令行中调用编译好的可执行文件(如windows的.exe文件),并传入参数以获得结果。如下图,对于Calculator.exe这个可执行文件:

    • 注意,不是在编译器上点击运行,而是在命令行中调用编译后的文件。
    • 注意,处理的时候,输入可能会有一个参数 -a 。如果加入这个参数,则需要把式子也输出,等号后加一个空格。如下图所示:

本次作业目的:

  1. 体会在已有的代码上继续开发。
  2. 了解如何给可执行程序传参。主要还是要知道当你们使用 git add 这些命令的时候,程序是如何解析的。
  3. 了解栈<stack><sstream>的使用。知道可以调用已有的库函数来解决某些问题。