一.作业题目
仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子、分母均为整数且分母不为零的分数)。
有理数基本运算:
- 构造有理数T,元素e1,e2分别被赋以分子、分母值
- 销毁有理数T
- 用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母。
- 将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母
- 有理数T1,T2相加,结果存入有理数T3
- 有理数T1,T2相减,结果存入有理数T3
- 有理数T1,T2相乘,结果存入有理数T3
- 有理数T1,T2相除,结果存入有理数T3
实验要求: - 抽象数据类型名为Rational。
- 有理数分母不能为负数或者0,类似输入请提示重输入。
- 数据对象和数据运算的表示与数据操作的实现分离。表示用头文件完成,实现用CPP文件完成。Main.cpp文件实现数据输入输出。
- 数据输入输出格式参考如下:
输入:
1 3 //T1的分子、分母
1 2 //T2的分子、分母
** 输出:**
5 6 //两个有理数相加
-1 6 //两个有理数相减
1 6 //两个有理数相乘
2 3 //两个有理数相除 - 程序应对异常输入或者出错必要处理和提示,比如提示:“分数是否需要约分等”。
二、博客作业要求:
编程前请务必学习c++基础,请参见“参考资料”压缩包中的C++基础(精简版).ppt
1.作业内容
用ADT的抽象数据模型描述你的有理数数据类型。如:
图片:
ADT Rational
{
数据对象:D={e1,e2|e1,e2属于int类型}
数据关系:R={<e1,e2>|e1是分子e2是分母}
基本运算:
Assign Rational(&T,e1,e2):构造有理数T,元素e1,e2分别被赋以分子、分母值
Destroy Rational(&T):销毁有理数T
Get(T,i,&ei)用ei返回有理数T的分子或分母,当i为1时返回分子, i为2是返回分母
Put(T,I,&ei)将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母
Panduan Rational(e1,e2)判断e1,e2,是否为0和负数,否则返回提示重新输入
Jia Rational(T,I,&T3) 有理数T1,T2相加,结果存入有理数T3
Jian Rational(T,I,&T3) 有理数T1,T2相减,结果存入有理数T3
Chen Rational(T,I,&T3) 有理数T1,T2相乘,结果存入有理数T3 Chu Rational(T,I,&T3) 有理数T1,T2相除,结果存入有理数T3
} ADT Rational
2.数据结构、函数说明
头文件:
主函数:
3.代码实现说明
(1)约分函数:
(2)加函数:
(3)减函数:
(4)乘函数;
(5)除函数;
4.结果展示
5.总结
自定一个头文件比较困难,有许多东西都需要查询书本或者上网查询,算法也比较抽象,事先先列表画流程图是一个号习惯,也有利于后续的代码的写入和构思,但是在写函数和头文件时错误较多,也和同学多次讨论借鉴代码,最后在执行代码上还是有部分缺陷。