一.作业题目
实验题目
试仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子、分母均为整数且分母不为零的分数)。
有理数基本运算如下所示:
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 //两个有理数相除
程序应对异常输入或者出错必要处理和提示,分子分母要约分。
二、博客作业要求:
参考代码:q群三元组代码
1.作业内容(1分)
用ADT的抽象数据模型描述你的有理数数据类型。如
ADT Rational{
数据对象:D={e1,e2|e1,e2均为有理数类型}
数据关系:R={<e1,e2>|e1为有理数分子部分,e2为有理数分母部分,且e2不为0}
基本运算:
AssignRational(&T,e1,e2):构造有理数T,其分子分母分别赋予参数e1,e2的值
DestroyRational(&T):销毁有理数T
Get(T,i,&e):用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母
Change(&T,i,e):将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母
Add(T1,T2,&T3):有理数T1,T2相加,结果存入有理数T3
Subtraction(T1,T2,&T3):有理数T1,T2相减,结果存入有理数T3
Multiply(T1,T2,&T3):有理数T1,T2相乘,结果存入有理数T3
Divide(T1,T2,&T3):有理数T1,T2相除,结果存入有理数T3
2.数据结构、函数说明(2分)
截图展示你的头文件。头文件代码务必加入注释。
- 头文件
3.代码实现说明(4分)
截图展示每个函数代码。简要说明做法。
建议用C++语法:cin,cout,引用参数&,new,delete
申请空间函数
销毁函数
相加函数
相减函数
相乘函数
相除函数
4.代码互评(选做,加分)
找一份同学代码,评价你和同学代码不同之处,如:
变量名命名风格不同
函数设计风格不同
结构体有无不同
异常出错处理是否不同
等等
注意:务必找个代码风格差异大的同学代码互评,此处要说写的太简单,0分。尽量找代码写的比自己好的同学互评。
5.结果展示(2分)
每种测试数据一个截图结果。测试数据越多,此项得分越高。务必考虑临界数据,如分母为负数或0情况等等。
6.总结(1分)
数据结构和抽象数据类型:我们为了写程序,肯定要对各种各样的数据进行操作,而数据结构就是各种数据间的组织方式的集合,就是它笼统的概括了一下数据及之间的关系,而抽象数据类型更细化了数据结构,细化了操作手段。
7.选做
学会使用git上传你的代码到码云
参考资料:Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)