博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DS-1

Posted on 2018-03-07 16:41  苑程傲  阅读(134)  评论(8编辑  收藏  举报

 

一.作业题目

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

构造有理数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  //两个有理数相除

程序应对异常输入或者出错必要处理和提示,比如提示:“分数是否需要约分等”。

二、作业内容

1.首先功能ADT描述:

ADT Triplet{

处理对象:D={e1,e2,e3|e1,e2,e3属于ElemType类型}

数据关系:R1={<e1,e2>,<e2,e3>}

操作:

Int NewTripletRational(&T,a1,a2)//构造三元组

Int RuinsNewRational(&T)//销毁组

Int ReturnRational(T,i,&e)//返回

Int ChangeRational(T,i,&e)//改变

Int AddRational(&T1,&T2,&T3)//相加

Int MultiplyRational(&T1,&T2,&T3)//相乘

Int DivideRational(&T1,&T2,&T3)//相除

Int MaxnumRational(a,b)//最大公约数

  1. 函数说明:
  2. 构造三元组

 

 

 

  1. 销毁组,释放内存空间

 

 

3. 返回组

 

 

 

  1. 改变数值

 

 

  1. 组相加 

 

 

 

6. 组相减

 

 

  1. 组相乘

 

 

  1. 组相除

 

 

  1. 求最大公约数

 

 

10. 主函数

 

 

11.函数

 

 

12.头文件

 

 

 

 

三.        运行截图

1.分母为零无意义时:

 

2.分子和为整数

 

3.正常情况

 

 

四.学习反思

1. 浅层的了解了C++语言与C的区别,并发掘了Code::Block的使用方法。

2. 抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。