.作业题目

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

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

ADT Rational

{   数据对象:

D={e1,e2|e1,e2均为整数,且e1为分子,e2为分母}

数据关系:

R={<e1,e2>|e1为有理数的分子,e2为有理数的分母,且e2不为0}

基本运算

AssignRational(&T,v1,v2)

操作结果:构造有理数T,元素e1,e2分别被赋以参数v1,v2的值

DestroyRational(&T)

初始条件:有理数T已存在

操作结果:有理数T被销毁

GetRational(T,i,&e)

初始条件:有理数T已存在,i属于{1,2}

操作结果:用e返回有理数T的分子或分母,i=1返回分子,i=2返回分母

PutRational(T,i,e)

初始条件:有理数T已存在,i属于{1,2}

操作结果:改变有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母

AddRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1T2相加,结果存入有理数T3

SubRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相减,结果存入有理数T3

MulRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相乘,结果存入有理数T3

DivRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相除,结果存入有理数T3

}ADTRational

 

二.数据结构、函数说明

头文件:

      

函数:

 

三.代码实现说明

1.构造有理数T

 

2.销毁有理数T

 

3.有理数相加

 

4.有理数相减

 

5.有理数相乘

 

6.有理数相除

 

7.求最大公约数

 

四.结果展示

 

 

五.总结

在这次作业中深刻认识到了传参的重要性,所以在引用T时要先给它分配存储,参数才传得进去;

其二,当多个小函数运用到同一个引用T3时,只需在主函数中先构造T3有理数,在后来的小函数中T3有理数将会随着其小函数的改变而改变;还有就是关于自定义一个名为Rational的数据类型,可以根据题目中Rational的特点,使用typedef 原有类型名 新类型名定义。数据结构分为逻辑结构和存储结构,使问题更快的到解决。

 

 

.作业题目

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

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

ADT Rational

{   数据对象:

D={e1,e2|e1,e2均为整数,且e1为分子,e2为分母}

数据关系:

R={<e1,e2>|e1为有理数的分子,e2为有理数的分母,且e2不为0}

基本运算

AssignRational(&T,v1,v2)

操作结果:构造有理数T,元素e1,e2分别被赋以参数v1,v2的值

DestroyRational(&T)

初始条件:有理数T已存在

操作结果:有理数T被销毁

GetRational(T,i,&e)

初始条件:有理数T已存在,i属于{1,2}

操作结果:用e返回有理数T的分子或分母,i=1返回分子,i=2返回分母

PutRational(T,i,e)

初始条件:有理数T已存在,i属于{1,2}

操作结果:改变有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母

AddRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1T2相加,结果存入有理数T3

SubRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相减,结果存入有理数T3

MulRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相乘,结果存入有理数T3

DivRational(T1,T2,&T3)

初始条件:有理数T1,T2已存在

操作结果:有理数T1,T2相除,结果存入有理数T3

}ADTRational

 

二.数据结构、函数说明

头文件:

      

函数:

 

三.代码实现说明

1.构造有理数T

 

2.销毁有理数T

 

3.有理数相加

 

4.有理数相减

 

5.有理数相乘

 

6.有理数相除

 

7.求最大公约数

 

四.结果展示

 

 

五.总结

在这次作业中深刻认识到了传参的重要性,所以在引用T时要先给它分配存储,参数才传得进去;

其二,当多个小函数运用到同一个引用T3时,只需在主函数中先构造T3有理数,在后来的小函数中T3有理数将会随着其小函数的改变而改变;还有就是关于自定义一个名为Rational的数据类型,可以根据题目中Rational的特点,使用typedef 原有类型名 新类型名定义。数据结构分为逻辑结构和存储结构,使问题更快的到解决。