---恢复内容开始---

一.作业题目

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

  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
    实验要求:
  9. 抽象数据类型名为Rational。
  10. 有理数分母不能为负数或者0,类似输入请提示重输入。
  11. 数据对象和数据运算的表示与数据操作的实现分离。表示用头文件完成,实现用CPP文件完成。Main.cpp文件实现数据输入输出。
  12. 数据输入输出格式参考如下:
    输入:
    1 3 //T1的分子、分母
    1 2 //T2的分子、分母
    ** 输出:**
        5 6  //两个有理数相加
        -1 6  //两个有理数相减
         1 6  //两个有理数相乘
         2 3  //两个有理数相除
  13. 程序应对异常输入或者出错必要处理和提示,比如提示:“分数是否需要约分等”。

二.作业内容

1.用ADT的抽象数据模型描述我的有理数数据类型。

ADT Rational{

                    数据对象:D={ e1, e2 | e1,e2属于ElemType类型} 

                    数据关系:R={<e1,e2>|e1是有理数的分子部分,e2是有理数的分母部分,e2不等于0}

                    基本运算:

                           AssignRational(&T,v1,v2):构造有理数T,元素v1,v2分别被赋以分子、分母值

DestoryRational(&T):销毁有理数T

ReturnT(i,e,&T):操作结果:返回有理数T的分子或分母,当入参i1时返回分子,入参i2时返回分母

                           ChangeT(i,e,&T):操作结果:将有理数T的分子或分母更改为e,当入参i1时改变分子,入参i2时改变分母

                           Add(T1,T2,&T3):有理数T1,T2相加,结果存入有理数T3

                           Subtract(T1,T2,&T3):有理数T1,T2相减,结果存入有理数T3

                           Multiply(T1,T2,&T3):有理数T1,T2相乘,结果存入有理数T3

                           Divide(T1,T2,&T3):有理数T1,T2相除,结果存入有理数T3

}ADT Rational

2.数据结构、函数说明

头文件:

函数:

 

3.代码实现说明

e1,e2是T1的分子分母;e3,e4是T2的分子分母

(1) 有理数相加

(2) 有理数相减

(3) 有理数相乘

(4) 有理数相除

(5)约分

4.结果展示:

1.正常情况

2.分母为零

三.作业反思

对于数据的正负数,能否约分要做进一步的处理;否则最终结果会错误;并且知道了抽象数据类型把问题分解为多个规模较小且容易处理的问题,然后把每个功能模块的实现为一个独立单元,通过一次或多次调用来实现整个问题。

---恢复内容结束---

Data_Structure01-绪论的更多相关文章

  1. TMS320C54x系列DSP的CPU与外设——第1章 绪论

    第1章 绪论 TMS320C54x DSP是TMS320系列DSP产品中的定点数字信号处理器.C54x DSP满足了实时嵌入式应用的一些要求,例如通信方面的应用. C54x的中央处理单元(CPU)具有 ...

  2. 翻译学python---《Learn Python the hard Way》---第一章 绪论

    打算学习python,但是又不想单纯地看书或是写个小项目,干脆引入很流行的翻译学习法来学习吧-         在论坛上看到了国外的一本<Learn Python the hard Way> ...

  3. 数据结构与算法(C/C++版)【绪论/线性表】

    声明:数据结构与算法系列博文参考了<天勤高分笔记>.<王道复习指导>.C语言中文网.非商业用途,仅为学习笔记总结! 第一章<绪论> 一.基本概念及入门常识  /// ...

  4. 数字图像处理的Matlab实现(1)—绪论

    第1章 绪论 1.1 什么是数字图像处理 一幅图像可以定义为一个二维函数\(f(x,y)\),这里的\(x\)和\(y\)是空间坐标,而在任意坐标\((x,y)\)处的幅度\(f\)被称为这一坐标位置 ...

  5. Data01-数据结构和算法绪论

    Data01-数据结构和算法绪论 一.数据结构和算法绪论 1.1 什么是数据结构? 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科. 程序设计=数据结 ...

  6. Chapter 1(数据结构绪论)

    附件列表 数据结构绪论.jpg

  7. 编译原理(一)绪论概念&文法与语言

    绪论概念&文法与语言 以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 绪论基本概念 1. 低级语言:字位码.机器语言.汇编语言.与特定的机器有关,功效高,但使用复杂.繁琐.费时 ...

  8. 【读书笔记】周志华《机器学习》第三版课后习题讨<第一章-绪论>

    虽然是绪论..但是...真的有点难!不管怎么说,一点点前进吧... 声明一下答案不一定正确,仅供参考,为本人的作答,希望大神们能多多指教~ 1.1 表1.1中若只包含编号为1和4的两个样例,试给出相应 ...

  9. 数字图像处理学习笔记之一 DIP绪论与MATLAB基础

    写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...

  10. Java反射学习系列-绪论

    Java反射学习系列-绪论 https://blog.csdn.net/hanchao5272/article/details/79358924

随机推荐

  1. Python conda安装 并安装Tensorflow

    Python conda安装 1: 官网下载3版本 Anaconda2-2018.12-Windows-x86_64.exe, 安装完后配置环境变量 用户变量->PATH 编辑新增路径 C:\P ...

  2. Lora开发

    NB-IOT和GPRS模块有什么异同 安装STM32CubeMX简介 HAL库与STD库 安装STM32CubeMX软件  MO工程建立 第四步是验证代码: 1.怎么进行IO配置 (1)看懂原理图 建 ...

  3. MySql数据库时区异常,java.sql.SQLException: The server time zone value '?й???׼ʱ?' is unrecognized or represents more than one time zone.

    JDBC访问MySql异常 Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException ...

  4. [转]NSIS 制作安装包无法创建桌面快捷方式或无法删除开始菜单项

    用户将桌面文件转移了,如: D:\Doc\Desktop  ,安装程序后,桌面不会生成快捷方式, 或者卸载后,开始菜单中的文件也不会被删除 NSIS卸载后无法删除开始菜单中的内容原因:因为NSIS中使 ...

  5. SQL中IF和CASE语句

    IF表达式 IF(A,B,C): 如果 A 是TRUE (A <> 0 and A<> NULL),则 IF()的返回值为B; 否则返回值则为 C.IF() 的返回值为数字值或 ...

  6. Win10下VirtualBox安装流程

    一.VirtualBox简介 VirtualBox 是一款开源的虚拟机软件,最初由美国SUN公司开发,后来SUN被Oracle收购,VirtualBox 更名为Oracle VirtualBox .不 ...

  7. TIMESTAMP类型字段在SQL Server和MySQL中的含义和使用

    公众号上转的满天飞的一篇文章,MySQL优化相关的,无意中瞄到一句“尽量使用TIMESTAMP而非DATETIME”,之前对TIMESTAMP也不太熟悉,很少使用,于是查了一下两者的区别. 其实,不管 ...

  8. linux 之 shell

    echo 输出命令 语法:echo [选项][输出内容] 选项 -e:支持反斜线控制的字符转换 范例 vi hello.sh #!/bin/bash #author liuch echo " ...

  9. 2019/2/11 LinuxRPM包管理

    一.RPM安装包管理: a.yum install  …… ,  yum remove ……,    yum update ……  , b.只下载安装包而不安装:yum install -y 包名 - ...

  10. .NET Core 跨平台发布Linux和OSX

    跨平台发布 简单新建一个项目. mkdir dotnethello cd dotnethello dotnet new dotnet new之后 修改project.json 如下: { " ...