2017《面向对象程序设计》寒假做业三

031602435 肖逸清git

031602431 王源github

设计思路

关于用户输入输出算法

  • 对用户输入用字符串进行处理,处理了设想中的错误输入
  • 用名为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。。。其中有几个我发现本身解决不了,多亏了王源同窗的帮助。。。王源同窗以后还对界面作了调整,看起来更加美观。再一次王源同窗的帮助(鞠躬)。


合做体会

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

最后感谢队友王源同窗

相关文章
相关标签/搜索