本次作业代码以上传至github,链接clike here
题目
在这个项目里添加一个Scan类,用来处理输入的字符串。 在这个类里写一个函数(方法)ToStringQueue(string input) 这个函数接收一个四则运算表达式(即input),逐个字符扫描这个表达式,将数字和符号提取出来,得到一组string在这个项目里添加一个Print类,用来输出所得到的队列。在这个类里写一个方法,接收一个队列,并逐个输出,每输出一个换一行。在这个项目里新建一个cpp文件,在其main里面获取键盘输入 以及 创建Scan对象和Print对象。调用Scan对象ToStringQueue(string input),将输入传进去以获取队列。接着将这个队列传入Print对象的方法中,得到输出。
要求:
当输入的数字超过10位(包括小数位)时,报错。
能够处理不超过10位的任意实数
代码要有注释,变量名要有意义
遵循编码规范(编码规范参考),可读性尽可能好
实践过程
跟预期的学习计划不同,原以为在mooc上学完c++的前两个学习计划就能完成此次作业,后来看了看题目,发现对于类和对象,队列的内容还完全没有了解,于是继续在mooc上充电,然后同学推荐了一个学习c++的参考文档,感觉基本上够解决此次作业了!
代码图
运行如下
解题心路
1、对于c++语法的掌握我通过mooc和c++文档,大致解决了,个别不清楚的地方还是通过百度和问同学获得解决;
2、第一遍做题目的时候,没能审清题意,将字符串里的数字一个个传入到队列中,而在输出的时候处理区分数字和符号的问题,遇到了巨大的麻烦,后来重新整理思路,从scan类里就将数字和符号分别处理好后传入队列,这样问题就很快得到了解决;
3、在将字符串传入队列的过程中,一开始没考虑到最后一个字符的特殊情况,然后输出结果都是两种错误,数字结尾的情况是数字无法输出,符号结尾的情况是多输出一次符号,最后拿出笔和纸来,写了几个例子,一步一步试下来,终于发现了bug,这里停顿了好久,感觉还是平时要多做题,才能熟练;
4、第一遍做题时,我将scan.h和scan.cpp放在了同一个文档里,但是在看了更多的视频后,发现这其实不是非常专业和美观的写法,头文件只需放定义即可,cpp文件里才要放进大量的执行代码,这样更为合理和美观;
5、#ifndef和#endif这两个语法我一开始是不会的,然而一个在c++学习中更加有造诣的同学告诉我,这两句能够防止重复包含头文件,更有效避免bug出现;
6、学习完c++并写完本题代码后,我感觉相比于c语言来说,c++的实用性,便捷性都有很大的提升,要是能好好学习掌握,必将对我大学的编程之路有很大帮助;
7、学习c++过程中遇到陌生语法,不妨参考学习资料,是个很棒的c++英文文档。