四则运算C#实现

时间:2021-09-13 20:37:59

需求分析:

  • 自然数:0, 1, 2, …。
  • 真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, …。
  • 运算符:+, −, ×, ÷。
  • 括号:(, )。
  • 等号:=。
  • 分隔符:空格(用于四则运算符和等号前后)。
  • 算术表达式:
  • e := n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e),
    其中e, e1和e2为表达式,n为自然数或真分数。
  • 四则运算题目:e = ,其中e为算术表达式。

功能设计

功能:
    1.生成随机数n
    2.生成随机运算符
    3.组成算数表达式
    4.计算题目结果并输出文档
    5.比较答案并给出错误题号

主要分为以下几个类,
1.生成随机数类,因为我们知道在c#里面,生成的随机数非常不随机。
它采用系统当前的硬件信息、系统启动时间和当前精确时间这些毫秒级的东西作为填充因子,
但这些东西在微观下都一样,尤其是瞬间生成好几个随机数的时候会产生几个一模一样的
不随机的随机数
2.产生随机题目
3.记录文档类
4.生成逆波兰表达式类
5.计算类
效果是这样的
四则运算C#实现

四则运算C#实现

 



四则运算C#实现

四则运算C#实现

 



查重的功能我并没有用树来实现,一个原因是懒,一个原因是感觉没有必要,另外也对树的操作不熟悉无所适从。我是直接对逆波兰表达式开刀,因为本质上就是树的后序遍历,所以就算
建了一棵树操作上也差不多,就检测(+|*)前面两个若是数字,就比个大小,大的放前面。要不是数字就不用管了,最后比较一下加工的逆波兰表达式。
实际上程序里貌似用不上这个,因为生成两个相似的式子概率太小了。。。。

四则运算C#实现
四则运算C#实现

 码云地址https://gitee.com/JMUCarlYin/homework_one.git