一、作业题目

仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子、分母均为整数且分母不为零的分数)。
有理数基本运算:

    1. 构造有理数T,元素e1,e2分别被赋以分子、分母值
    2. 销毁有理数T
    3. 用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母。
    4. 将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母
    5. 有理数T1,T2相加,结果存入有理数T3
    6. 有理数T1,T2相减,结果存入有理数T3
    7. 有理数T1,T2相乘,结果存入有理数T3
    8. 有理数T1,T2相除,结果存入有理数T3

二、实验

1.用ADT的抽象数据模型描述你的有理数数据类型。

ADT Rational {
数据对象:D = { e1,e2 | e1,e2均为整且e2部位0}
数据关系:R = { <e1,e2> }
基本操作:int PlusRational(int T1[],int T2[],int T3[]);
操作结果:有理数T1,T2相加,结果存入有理数T3
int MinusRational(int T1[],int T2[],int T3[]);
操作结果:有理数T1,T2相减,结果存入有理数T3
int MultiplyRational(int T1[],int T2[],int T3[]);
操作结果:有理数T1,T2相乘,结果存入有理数T3
int DivideRational(int T1[],int T2[],int T3[]);
操作结果:有理数T1,T2相除,结果存入有理数T3
int SimplifyRational(int T3[]);
操作结果:将有理数约分并输出结果
}ADT Rational

2.数据结构、函数说明

week01—绪论-LMLPHP

3.代码实现说明

(1)构造有理数函数

week01—绪论-LMLPHP

(2)销毁有理数函数

week01—绪论-LMLPHP

(3)返回有理数的分子或分母函数

week01—绪论-LMLPHP

(4)改变有理数分子或分母元素

week01—绪论-LMLPHP

(5)求两个有理数相加结果函数

week01—绪论-LMLPHP

(6)求两个有理数相减结果函数

week01—绪论-LMLPHP

(7)求两个有理数相乘结果函数

week01—绪论-LMLPHP

(8)求两个有理数相除结果函数

week01—绪论-LMLPHP

(9)将有理数约分函数

week01—绪论-LMLPHP

4.结果展示

(1)非法数据

week01—绪论-LMLPHP

(2)两个有理数分子均为零

week01—绪论-LMLPHP

(3)有一个有理数分子为零

week01—绪论-LMLPHP

(4)题例

week01—绪论-LMLPHP

(5)两个有理数均为负数

week01—绪论-LMLPHP

(6)两个有理数一正一负

week01—绪论-LMLPHP

5.总结

数据结构包括数据对象和数据对象之间的联系

数据结构可以带来更高的运行或者存储效率

已有的数据类型不足以解决实际问题,比如题中对有理数进行的四则运算,就需要定义抽象数据类型

抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过已有的数据类型来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。

05-22 07:44