博客作业01-抽象数据类型
一.作业题目
实验题目
试仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子、分母均为整数且分母不为零的分数)。
有理数基本运算如下所示:
- 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
实验要求:
- 抽象数据类型名为Rational。
- 有理数分母不能为负数或者0,类似输入请提示重输入。
- 数据对象和数据运算的表示与数据操作的实现分离。表示用头文件完成,实现用CPP文件完成。Main.cpp文件实现数据输入输出。
- 数据输入输出格式参考如下:
**输入:**
1 3 //T1的分子、分母
1 2 //T2的分子、分母
** 输出:**
5 6 //两个有理数相加
-1 6 //两个有理数相减
1 6 //两个有理数相乘
2 3 //两个有理数相除
- 程序应对异常输入或者出错必要处理和提示,分子分母要约分。
二、博客作业要求:
1.作业内容
用ADT的抽象数据模型描述你的有理数数据类型。
2.数据结构、函数说明
3.代码截图
(1)构造结构体数组的函数
用C++语法来申请空间首先在主函数中要输入你要构造的两个有理数的分子和分母必须符合题意否则要求重新输入然后开始对结构体数组中的每个成员进行结构体成员赋值。
(2)销毁结构体数组
参照老师给的三元组模型进行编写
(3)返回分子或者分母
定义变量e保存返回结果用宏定义对1和2进行定义表示分子和分母增加代码的可读性
(4)
用取别名的方法对结构体的第一个成员T1进行改变
(5)两个有理数相加
将两个数的分母相乘然后分子对应扩大后相加后化简
(6)两个有理数相减
同上
(7)两个有理数相乘
分子乘以分子分母乘分母赋值给T3的成员同需要化简
(8)
用辗转相除法找到分子分母的最大公约数后化简。
5.结果展示
正常数但是需要化简
负数或者是0报错知道输入数据正常才可以进行下一步
分子为0依然可以进行
修改的数据也必须符合要求
修改之后会化简
6总结
抽象数据结构其实就是将题目的数据类型所忽略单纯的去关心这些数据彼此间的关系,着有利于对数据的某一些处理的进行,当我们再次需要去用这个程序的时候我们没要去整个代码找过去更改内容只要在宏定义中将类型进行改变