四则运算题目生成



  • 程序结构 :

    • get_int 类 输出整型答案(强制整型)

    • get_fraction 类 输出分数答案

    • fraction 类 分数类 ,将所有数作为分数储存

    • make_problem 类 题目生成类


  • 答案输出类 :

    • 属性 : 运算符栈 oper ; 运算符重要性栈 important ; 运算数栈 count

    • 运算符重要性 : '+' 与 '-' 重要性最低为0 , '*' 与 '/' 重要性为1 , '(' 与 ')' 间的运算符重要性皆+2

    • 具体操作 : 若当前将要入栈的运算符重要性不大于栈顶运算符,则运行栈顶运算符并出栈,直到栈顶运算符重要性小于当前重要性时入栈

    • get_int 与 get_fraction 的区别为 运算数栈 count 的类型为 int 与 fraction


  • 分数类 :

    • 属性 : 分子 x 与 分母 y , 若为负数则 x 为 负 , y 强制为正

    • 重载运算符 : += ; -= ; *= ; /= ; == 调用 gcd 方法 实现分数的运算

    • 转换整数方法 : x/1 ; 将分数转换为字符串方法


  • 题目生成类 :

    • 属性 : 生成整数数量 n ; 整数大小范围 m ;括号层次 k

    • 具体方法 : 运算数与运算符数量相同时 , 随机取得运算数 ; 运算数大于时 随机取得运算符 ; 严格保证运算符数量不超过运算数

    • 生成问题 : 可能会出现 除0 运算,运算后返回 error input ,出现括号内无运算符情况 (式子正确,但是有点多余)

    • 尚未完善 : 尚未照顾小学生 ,尚未判断相同式子,不过 n=5,m=10,k=1 时 生成 1万 条暂时没发现重复

    • 运行效率 : n=5,m=10,k=1 时 生成 100 万 条在28秒内完成 。 编译器 xcode 环境 mac OS X EI capitan


  • 使用方法 :

    • i 循环处可更改循环次数

    • make_problem 构造方法中 放入 n,m,k

    • 若要主动输入式子可以解开上方注释


  • 暂时还有许多没有完善好的地方,毕竟比较弱

原文地址:https://www.cnblogs.com/YooRarely/p/5181243.html