• 四则运算题目生成




    • 程序结构 :

      • 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

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


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

  • 相关阅读:
    多表代换密码
    仿射变换
    LeetCode实战练习题目
    13.线性同余方程 扩展欧几里得算法
    12.扩展欧几里得算法
    11.快速幂求逆元
    10.快速幂
    9.筛法求欧拉函数
    8.欧拉函数
    7.最大公约数 欧几里得算法,也叫辗转相除法
  • 原文地址:https://www.cnblogs.com/YooRarely/p/5181243.html
Copyright © 2020-2023  润新知