zoukankan      html  css  js  c++  java
  • 课程作业四

    本次作业链接

    采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?
    类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?
    该自动出题软件采取何种算法或者是如何实现的?可以采用流程图描述的方法。

    1.类的描述

    本次分类,我一共分离出4种类,分别是Equation、File、Language、Random.如图:

    顾名思义,这四个类分别实现“算法生成和计算”,“文件操作”,“多语言提供”,“随机数生成”。
    “Equation”这个类包含了creat()用来给四个随机数赋值、给三个符号赋值以及确定括号的位置;gengerateExpression()函数用来生成运算式,其实也就是把creat()赋完值的变量整合起来;calculatResult()则是用来计算递归计算,其实就是多次调用辅助函数float calculate(float a, int b, float c)。
    “File”类包含了readFile()和writeFile()的功能,分别比从文件里读题数和将题目、正确答案、用户答案写入文件。
    “Language”提供多语言支持,具体延续了之前C语言的实现方式。
    “Random”就是包含多个不同的用来产生不同数字范围的函数,一共有randomNumber(),randOperation(),randombracket()这三种。

    2.类的协作


    3.采用算法

    目前而言还是暴力解决,例如:result = calculate(number[0], sign_1, calculate(calculate(number[1], sign_2, number[2]), sign_3, number[3]));虽然有想过用逆波兰算法,不过突然意识到自己不会用堆栈,只会模拟堆栈做一些程序设计的小题目,所以暂时实现不了。

  • 相关阅读:
    cpuset
    top
    path-lookup
    strace
    IDR算法[原理]
    cgroup
    转载
    std::reverse_iterator::base
    可重入、不可重入
    chromium code 中 普遍使用的 C++11 语法
  • 原文地址:https://www.cnblogs.com/s0316026/p/6850843.html
Copyright © 2011-2022 走看看