zoukankan      html  css  js  c++  java
  • 四则运算题目生成程序(基于控制台)

     

    (项目文件地址:https://git.coding.net/Aes/Exp1.git)

    一、需求分析

    1.将用户的输入作为参数,生成不同数量的一定范围的算式

    2.算式的运算符数量不超过3个(随机生成1-3运算符的算式)

    3.判断用户的答案是否正确

    4.将题目和答案输出到文件中

    5.使用分数计算,并且要保证生成的算式不重复

    二、设计思路

    1、算式生成:

    随机生成一个参数m,控制运算符的数量,则数字数量为m+1。随机生成一个数字,一个运算符的规律来生成算式,最后得到三个数组,一个存放运算符,一个存放数字,还有一个存放完整的算式。

    2、计算优先运算符

    根据存放运算符的数组来进行遍历,判断之前是否出现过”*/”符号,再根据当前数组遍历的位置,来生成一个算符优先的数组。数组元素存放的是,优先计算的符号的下标。如:“2+3*5-6”这个算式中,先算*,再算+和-,所以优先符数组里面是元素是:1,0,2。

    3、计算算式的结果

    思路就是,例如:1+2*3-4,根据计算出来的优先数组,先算2*3,结果存入result,2和3计算过后,就将这两个数的位置0,再算1+2,2已经置0了,所以是1+result,然后置0,算3-4,3已经置0了,所以算result-4,最后的就是结果。

    但是,我又发现了这个想法对于1*2+3*4或者1+2+3*4,这种式子来说,(优先符为021或者201)是不能计算出正确结果的,所以,我就讲这种情况特地来计算,算出左右两边的,再来算中间的操作符。

    4、计算结果精度

    BigDecimal类来进行精确的计算,直接使用a*b,或者a/b的double型计算,计算结果经常会不准确。

    5、文件输出

    将算式和答案存入list中,写一个函数,用list作为函数的参数,遍历将list中的内容输出文件

    三、运行截图

    四、总结

    经过同学的提醒才知道原来可以将中缀表达式转换为后缀表达式,然后用栈数据结构来进行计算。这样更简单方便。而不用像我的方法一样,要思考各种的情况。而且使用栈能够更好的计算带有括号的算式。

    括号、分数、查重功能没有实现。

    五、PSP表格

    PSP2.1

    Personal Software Process Stages

    Time Senior Student

    Time

    Planning

    计划

    5

    5

    · Estimate

    估计这个任务需要多少时间

    5

    5

    Development

    开发

    420

    512

    · Analysis

    需求分析 (包括学习新技术)

    20

    15

    · Design Spec

    生成设计文档

    10

    5

    · Design Review

    设计复审

    10

    10

    · Coding Standard

    代码规范

    20

    2

    · Design

    具体设计

    40

    60

    · Coding

    具体编码

    240

    300

    · Code Review

    代码复审

    20

    0

    · Test

    测试(自我测试,修改代码,提交修改)

    60

    120

    Reporting

    报告

    30

    6

    ·

    测试报告

    20

    2

    ·

    计算工作量

    5

    1

    ·

    并提出过程改进计划

    5

    3

    (单位:分钟)

  • 相关阅读:
    [文档].艾米电子 移位寄存器,Verilog
    [书籍].Pong P. Chu FPGA Prototyping By Verilog Examples
    [转载].FPGA三国志
    [笔记].电机行业常用的中英文对照
    [原创][连载].基于SOPC的简易数码相框 – Nios II SBTE部分(软件部分) 配置工作
    [转载].振南带你入门FAT32文件系统 视频
    [文档].艾米电子 在综合中使用函数,Verilog
    [转载].阿迪老师 《SD卡入门到精通》视频
    [文档].艾米电子 寄存器,Verilog
    [笔记].怎样消除pointer targets in passing argument n of 'func_xxx' differ in signedness警告
  • 原文地址:https://www.cnblogs.com/Aeons/p/7583227.html
Copyright © 2011-2022 走看看