第一周的作业总体上来说比较简单,但是由于长时间没有码代码,所以其中问题不断。。
计划:
大体思路很简单对于分数构造新的一个类,重载运算符。算式生成就用随机数。再将算式转化为字符串,用中缀转后缀进行计算。
用模板template实现三种类型的运算(整数小数和分数)以及相关数据栈的定义。
关于括号生成的部分:最开始想的是先直接生成不带有括号的算式,最后插入括号;后来又想到,算式是一部分一部分生成的,可以就用随机数决定这一部分是否生成算式。相比之下,用了后者。
关于整数算式的生成部分:一开始纠结在如何保证整数算式的结果仍然为整数,最开始想的是每次如果有除法,就check该部分算式的结果是否为整数,后来发现由于运算符的优先级以及括号的问题,所谓的“该部分”难以定义。最终无奈,直接检查最终生成的算式结果是否为整数,不是的话重新生成(实现后发现效果其实还可以。。)
拟用时间一个下午,代码量估计在300行左右。
实际情况:
实际码起代码来真是错误百出,第一个最大的问题就是模板的使用问题,由于使用不熟练,最后不得不将三类分开写,虽然都是复制粘贴,但还是大大增加了代码量。代码框架的完成在有了思路之后,完成还是比较迅速的,主要就是不断的调试和修复bug(最终还有一个bug没有解决,在上一篇随笔最后有提出..)测试完整数和分数部分,由于计划于现实之间的差距(微笑脸),最后实在不想完成小数部分剩余的代码(小学生也不会小数啊(╯‵□′)╯︵┻━┻),以后有时间继续完善。。
删除小数部分的代码后代码量在450行左右,实际用了一天。。。。
性能:
自己感觉用户体验感并不是很好,先不提生成算式的实际计算难度问题。。对于结果输入的问题,分数算式的结果只能输入分数,整数的只能小数,不能输入汉字或者其他字符,也不能空过去。。再有就是偶尔bug没有生成完要求的题目数就自动结束的小问题。