一、作业内容

ADT Rational{
    数据对象:D={v1,v2}都是ElemType类型
    数据关系:R={<v1,v2>}
    基本操作:
                    Status InitRational(Rational &R,ElemType v1,ElemType v2)
                    Status DestroyRational(Rational &R)
                    Status RationalPut(Rational &R)            
                    Status RationalAdd(Rational &R,Rational R1,Rational R2)
                    Status RationalCut(Rational &R,Rational R1,Rational R2)
                    Status RationalTake(Rational &R,Rational R1,Rational R2)
                    Status RationalDivide(Rational &R,Rational R1,Rational R2)
                    int gcd(int m,int n)
}ADT Rational               

二、数据结构、函数说明

三、代码实现说明

1.输入输出和菜单选择及初始化**





2.化简有理数**



ps:先找到最大公约数,再除以这个数即可化简

3.四种运算法则及销毁





四、代码互评

我的化简代码

同学的化简代码

我的化简代码使用辗转相除法运算效率比较比同学的高;而同学的做法效率较低,需要一直找数除到不能除为止,特别是数据大的时候,运算时间较长,占用空间较多。但我的化简代码也有不足之处,那就是需要在每个运算函数调用约分函数,一旦需要调用的次数多了,容易出现内存占用过多程序崩溃的问题,这点还有待改

五、结果展示

输入可化简的有理数

加法

减法

乘法

除法

分母为0

输入的有理数为负数

ps:以上运算均化简成功

六、总结

数据类型可以看作是带结构的数据元素的集合,他们直接存在某种特定的关系,如逻辑关系和运算操作
抽象数据类型一般包括数据对象、数据关系和基本运算,其中数据对象和数据运算的声明与数据对象的表示和数据运算的实现相互分离。其中,基本运算有两种参数:赋值参数,只为运算提供输入值;引用参数,以&开头,除可提供输入值外,还将返回运算值。
 posted on 2018-03-08 19:12  Ljy1999  阅读(161)  评论(1编辑  收藏  举报