小学四则运算 “软件”之初版

作业来源

本次作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166

我的项目GitHub远程仓库地址:https://github.com/llgeill/SoftWareTest

项目过程预估与耗时记录

PSP2.1 Personal Software Process Stages 预估时间 真实时间
Planning 计划 1h 1h
· Estimate 估计这个任务需要多少时间 5h 10h
Development 开发 5h 6h
· Analysis 需求分析 (包括学习新技术) 1h 1h
· Design Review 设计复审 4 6
· Coding Standard 代码规范 1h 1h
· Design 具体设计 1h 1h
· Coding 具体编码 5h 6h
· Code Review 代码复审 1h 2h
· Test 测试(自我测试,修改代码,提交修改) 1h 2h

 

 

项目构思

通过分析题目要求,可以清楚的知道需要按照用户输入的数字随机生成一定量的运算式子,数字包括正整数和分数,并且范围是0-100之间,那么

我认为可以通过字符串的形式来一起保存整数和分数。再通过栈的方式来解决运算问题

项目设计

  1. 通过随机的方式生成一定数量的运算符
  2. 通过运算符确认常量的个数(比运算符多一个)
  3. 在一定数量的常量中随机生成一个真分数(先生成分母再生成分子,分数前面加个'#'用来区分)
  4. 按顺序组合常量和符合,得到一条运算式
  5. 通过栈的入栈和出栈来运算结果(由于有真分数,所以把所有数都当成分数来计算)
  6. 最后得到一个没有化简的分数,通过约分获取最终结果
  7. 判断结果是否为负数,如果是则跳过此次循环,并且i--(i表示循环的次数),否则输出式子,并且继续下一次循环

项目问题和解决方案

1.如何将整数与真分数混合运算

我的想法是将这些数都通过字符串的方式保存到数组上,并且对于真分数我额外在真分数的开头用‘#’标记 ,例如一个真分数' 1/2 ',我在

数组中记录为' #1/2 ',这样子方便我在栈运算的时候容易判断当前字符串是整数还是真分数

2.随机生成的数字不能保证除得尽

我的想法是把所有常量都当作分数计算,最后答案也是用分数表示,并且使用循环的方式找出分子分母的最大公因子

然后约分,这也跟题目要求的需要判断用户输入的真分数并进行校验的想法是一样的。

项目不足之处

由于随机数确定在0-100之间,乘法与除法可能会运算量过大,例如63÷65×89

项目截图

 

posted on 2018-10-09 19:27  liliguang  阅读(292)  评论(4编辑  收藏  举报