博客作业01-抽象数据类型

有理数基本运算

1.抽象数据结构

ADT Rational{
        
        数据对象:D={e1,e2 | e1,e2属于ElemType类型}
        
        数据关系:R={<e1,e2>}    //e1为分子,e2为分母

        基本操作:
               InitRational(*T, v1, v2);//构造有理数T,元素e1,e2分别被赋以分子、分母值

               DestroyRational(*T);//销毁有理数T

               Get(*T, i, e);//用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母

               Put(*T, i, e);//将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母

               yuefen*T);//约分得最简分数

               add(*T1, *T2, *T3);//有理数T1,T2相加,结果存入有理数T3

               jian(*T1, *T2, *T3);//有理数T1,T2相减,结果存入有理数T3

               cheng(*T1, *T2, *T3);//有理数T1,T2相乘,结果存入有理数T3

               chu(*T1, *T2, *T3);//有理数T1,T2相除,结果存入有理数T3
}ADT Rational

2.数据结构、函数说明

3.代码实现说明

  • 主函数:
  • 构造有理数:
  • 销毁有理数:
  • 约分:
  • 相加:
  • 相减:
  • 相乘:
  • 相除:
  • 返回分子,分母:
  • 更改分子,分母:

4.结果展示

  • 测试数据
  • 分母为非正数时
  • 负有理数
  • 有一个有理数为0时(自定义:如果结果为零,分子和分母都为零)
  • 两个相同且不是最简的有理数
  • 修改,返回,输入数据,以最后的有理数T3为例,e的初值设为5,先改变T3分母,如红色框;再返回T3当前的分母,如蓝色框;

5.代码互评

  • 志坚的代码(头文件与构造有理数的函数):

  • 我的代码:


    不同之处:
    1.从头文件中可以看出,我和他使用的数据类型不一样,我使用的是结构体表示有理数,而他是用数组;
    2.对于构造有理数, 他用到了动态申请空间,由InitRational分配储存空间,比较节省空间效率,是一大优点,而我是直接使用结构体表示;
    3.从变量名的命名上,我们都使用了typedef来重新命名,函数风格上,我们都是无返回值的类型,只是形参有不一样,我大多使用指针,而他用变量名;但是函数中他使用了更多的c++语法,所以整体上比我的好得多。

6.总结

  • 了解了抽象数据结构的用法,还有三元组的形式,接触到了一些c++语法,比如cin,cout,&等等的用法,还有就是复习了一些c语言的知识,比如函数,指针,结构体,数组等的应用。
  • 但是没学到的东西还是很多,很多知识都是一知半解,弄不透彻,所以做起题目很蒙,不知道该从何入手,比如用三元组,函数调用时,函数的形参到底是要怎么表示,什么类型。
posted @ 2018-03-08 20:42  晴天*  阅读(240)  评论(1编辑  收藏  举报