zoukankan      html  css  js  c++  java
  • 个人项目进展

    基本要求:将10-20道四则运算题目写入文档,程序读取并输出题目,同时计算出正确结果。使用者对每道题目计算答案,答对进行提示,答错输出正确结果。分别记录回答正确、错误的数目并输出。
    四则运算题目基本要求:
    1.加减乘除四种运算全部出现

    3.算式中要出现括号
    2.出现真分数和假分数的运算
    4.最少出现一个长度为10的四则运算(10个数字的混合运算)
     

    加分项:按照实现下列功能的数量和完成情况,进行相应加分
    1.实现四则运算算式的自动生成
    2.把程序变成一个网页程序
    3.把程序变成一个Windows/Mac/Linux 电脑图形界面的程序
    4.把程序变成一个智能手机程序
     
     
    我的主要涉及思路是因为会涉及分数的运算,为了简化实现复杂程度,我选择直接将所用的数直接都定义为分数来进行计算。计算过程与之前数据结构课上的中缀表达式计算方法一样,即先中缀转后缀,再进行后缀表达式计算。区别是此时我的后缀表达式计算采用的数值栈的数据类型为我自己实现的一个Fraction类。
    在网上还了解到可以利用java.util.regex.matcher对表达式进行切分得到每一步的语义进行计算,甚至直接完成转换到后缀乃至计算。这与我们编译原理课程还有结合。对此我现在还在学习中。
     
    生成表达式的流程:
    1、随机生成任意个左括号
    2、随机生成数字
    3、随机生成任意个右括号
    4、随机生成运算符
    5、重复1到4直至最后一个数
    6、补齐右括号
    这种实现比较简洁。但是会出现1+(3)这种括号显得不太必要的表达式。但这仍然合法。
     
    在判断表达式合法时,经过我的考虑,我认为在一个合理的不含负数的四则运算表达式在去掉括号之后仍然是一个合理的表达式,同时一个合理的四则表达式在加上合理的括号后仍然是合理四则运算表达式。
    由于引入括号之后四则表达式由正则语言RL变为上下文无关语言CFL,java提供的pattern工具没有平衡组功能故无法处理多级嵌套的括号匹配。我采用了迂回的办法即:即先去括号看是否合理,此步采用java.util.regex中的pattern和matcher,之后扫描括号位置看起周围是否有不可出现的符号以及括号数量是否匹配。这样实现起来比较清晰,经过和本组内其他同学的交流,我认为比用条件转移语言单纯地写一个控制流要更好理解。
    一旦我们完成表达式合法性的判断,表达式计算中出现的鲁棒性就只剩下除零这一种了,我把这个写成了一个分数分母为0的异常来检测。至此主要开发流程已经完成。
  • 相关阅读:
    Python--day62--什么时候用GET请求和POST请求
    Python--day62--ORM的使用
    使用 vs code 搭建vue项目(一)
    jquery如何模拟分页-小白进阶
    JavaScript 实现的4种数字千位符格式化方法
    web秀
    五十个UI设计资源网站
    基于 HTML5 WebGL 的 水泥工厂可视化系统
    ASP.NET MVC图片管理(上传,预览与显示)
    jQuery使用FormData上传文件
  • 原文地址:https://www.cnblogs.com/vansama/p/5271143.html
Copyright © 2011-2022 走看看