zoukankan      html  css  js  c++  java
  • 2017《面向对象程序设计》寒假作业三

    031602435 肖逸清

    031602431 王源

    设计思路

    关于用户输入输出

    • 对用户输入用字符串进行处理,处理了设想中的错误输入
    • 用名为prompt的int型变量的值来决定用户收到的提示语言(1为中文,2为英文)
    • 解题报告采用名为wrongquenum的数组来存储用户的错误题目编号,在最后通过for循环将错误题目呈现出来。总结用名为corrnum的int型变量存储正确题目数量,wrongnum存储错误题目数量。

    算式生成

    一个算式由符号和前后“数据域”构成,由此,采用二叉树来建构算式。然后结合随机生成数的算法来随机生成一个算式。

    class TreePoint{
    private:
        TreePoint *prep;
        TreePoint *next;
        char symbol;
        int priority;
        int rightpriority;
        Fraction *num;
        char newsymbol(int upper);
        ……
    };
    

    算式 计算

    算出前“数据域”和后“数据域”的值,然后根据符号算出算式的值。整个计算采用递归的方法对二叉树进行中序遍历

    算式 输出

    同样采用递归的方法对二叉树进行中序遍历。对于括号的解决采用优先级的方式。一个数的priority及rightpriority均为4。rightpriority用于“解决减号的后运算域是加号或减号”的情况及类似情况。一旦遍历的时候发现优先级掉落(例如'*'的前数据域出现加法),就增加括号(只在输出时)。

    switch (symbol)
    {
        case '+':priority=1;rightpriority=1;break;
        case '-':priority=1;rightpriority=3;break;
        case '*':priority=2;rightpriority=2;break;
        case '/':priority=2;rightpriority=3;break;
    }
    

    关于数

    用Fraction类进行存储,将整数和真分数全部视为分数,overload四则运算、逻辑等于。

    class Fraction{
    private:
        int nume;// numerator
        int deno;// denominator
    ……
    };
    

    关于其他要求

    • 对根节点特殊处理,保证至少一个数据域是子算式,从而生成“混合运算”。
    • 对层数进行记录并限制,使算式不至于过于庞大
    • 生成树后马上进行答案计算,保证算式的合法性,以及“答案是整数”的要求

    编码规范

    • 采用C++,每个类都有.h .cpp两个文件
    • 使用Tab缩进,tab size =4
    • define不需要的时候undef之

    程序实现和结果测试的截图

    中文
    英文
    e存在
    错误运行结果


    github的提交链接和提交日志截图

    github链接
    1
    2


    两位同学的分工和协作证据截图

    协作截图


    合作过程

    开始的时候我们确立了大概的思路,然后开始学习github协作的相关事项。然后我们各自确立任务,开始实现一个个功能。在我敲代码的过程中出现过不少问题,也发现自己知识储备不够,所以我是边学边敲,感觉拖慢了进度,很不好意思
    。。。最后我在写完main函数,在编译时出现了许多bug。。。其中有几个我发现自己解决不了,多亏了王源同学的帮助。。。王源同学之后还对界面做了调整,看起来更加美观。再一次王源同学的帮助(鞠躬)。


    合作体会

    • 感觉有了队友就有种责任感,因为怕拖后腿所以感觉效率高了不少。
    • 这么多代码如果是我一个人肯定要花大量时间,所以有队友可以减少很多工作。
    • 有一个厉害的队友感觉很棒,可以从他那里学到很多东西。
    • 由于我一开始考虑不周,没有想到用户在选择提示语言时乱输的问题,还好最后队友注意到了这一点,加了一条语句。也是我想当然地认为用户会遵守提示操作,所以没有去想用户给出了不符合要求的输入该如何处理。。今后会注意这点。

    最后感谢队友王源同学

  • 相关阅读:
    hdu_2224_The shortest path(dp)
    hdu_4824_Disk Schedule(dp)
    hdu_5680_zxa and set(想法题)
    hdu_5683_zxa and xor(非正解的暴力)
    hdu_1429_胜利大逃亡(续)(BFS状压)
    hdu_1254_推箱子(双BFS)
    hdu_1969_pie(二分)
    hdu_2446_Shell Pyramid(数学,二分)
    hdu_2141_Can you find it?(二分)
    5.2 nc + JMX查看分布式程序数据
  • 原文地址:https://www.cnblogs.com/daydreams/p/6411912.html
Copyright © 2011-2022 走看看