2017《面向对象程序设计》课程作业一
新增要求
-
要求生成四个数字以及若干个运算符,例如生成的运算式:(5 - 4 ) * (3 + 8),或者(5+3)* 4 * 6。
-
体现函数分离、模块化的思想。
如以下函数scan()//该函数用于与用户交互,获取输入数据randomNumber()//用于随机生成数字
randomOperation()//用于随机生成运算符
generateExpression()//用于生成运算式
calculateResult()//用于计算生成的运算式的结果
print()//将统计结果输出给用户
-
采用C++编码,特别要求必须采用C++的标准输入输出,即cin/cout。
代码改动
-
之前代码输出题目如:a+(b*c)形式,这次增加一个变量d和一个新的符号,生成题目如:(5 - 4 ) * (3 + 8)。
-
将能够改动的输入输出全都替换为c++的标准输入输出,由于代码中有些部分需要利用到返回值,所以这些部分的输入没有改动。
运行实例
代码地址
感想
我在第一次编码时,已经将各个功能用不同的函数表示,但是不够彻底,generateexpression函数的功能和main函数混在一起,整个程序的结构,看起来就不那么清晰。在重构的时候,发生了一些阻碍,主要是变量的设置不够理想,不同函数之间的变量设置成了相同的名字,所以更改的时候就要检查哪些变量是哪个函数的,是否能够设置成全局变量,重构起来增加了许多麻烦,这是原来的代码不理想的地方。而好的地方,正是将原先编写好了的自定义函数,因为功能都分了块,所以从三个数过渡到四个数就轻而易举了。所以,程序的模块化是一个很重要的方法,它能为日后的维护提供许多方便,也便于分工与合作。