博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DS博客作业01--日期抽象数据类型设计与实现
阅读量:6259 次
发布时间:2019-06-22

本文共 1622 字,大约阅读时间需要 5 分钟。

1.思维导图及学习体会

1.1第一章绪论知识点思维导图

1474872-20190303145747268-803190317.png

1.2 学习体会

  • 个人感觉数据结构的难度相比于上一学期来说是更大的,刚开始预习的时候无从下手,感觉概念的东西变多了,看书的时候书本上的例子看起来并不是很易懂,并且突然加入c++的语法,让人一时间感到不适应,自己写代码的时候也不知道怎么下手,但在上完课之后感觉好多了,有了一个大概的感觉,希望在接下来的学习中能更加进步。

    2.大作业作业内容

    2.1 设计日期的ADT类型

ADT Date{数据对象:D = {year,month,day | year,month,day属于I(I为整数集合)}数据关系:R = {
,
|year是年,month是月,day是日}基本操作:Status CreatDate(date,year,month,day);//操作结果:构造了三元组date,year为date中的年,month月,day日.Status DestroyDate(DATE &date);//操作结果:date被销毁。Status RightDate(date,outFile)//操作结果:数据合法性的判断Status IsYear(year,outFile);//操作结果:判断是否是闰年还是平年 Status JudgeWeek(date,outFile);//操作结果:判断星期几。Status MonthName(date,outFile);//操作结果:月份英文名。Status ChangeDate(date,outFile);//操作结果:得出当前日期增加或减少几天之后的日期Status CompareDate(date,outFile);//操作结果:比较日期间的逻辑关系}ADT Date

2.2.数据抽象:头文件

date.h

1474872-20190309193536559-59178294.png

common.h

1474872-20190309193714668-183172984.png

2.3数据封装说明

截图展示每个运算操作代码。并文字简要介绍功能。

  • (1)构造三元组函数
    做法:动态申请内存,分别把3个变量放入数组date中。
    1474872-20190309194358780-1208790256.png
  • (2)销毁date
    做法:用c++中的delete进行销毁
    1474872-20190309194441492-124693584.png
  • (3)数据合法性的判断
    做法:用if语句和switch语句进行判断,月份限制1到12,根据月份对应有多少日进行限制
    1474872-20190309194842242-1942450188.png
  • (4)判断闰年平年
    做法:用if语句进行判断,不能能被 4 整除但不能被 100 整除,或者能被 400 整除为平年,else为闰年
    1474872-20190309195028835-1699639428.png
  • (5)判断月份输出英文名
    做法:将月份的英文名存储在一个二维数组中,每个月份对应一个元素
    1474872-20190309195629578-2055048511.png
  • (6)判断星期几

    做法:根据基姆拉尔森计算公式得到,将"一","二","三","四","五","六","日",存储在一个二维数组中,一一对应
    1474872-20190309195851142-111041104.png

  • (7)日期的加减

    做法:举例12月30日加3天
    判断得出加上3天会超出31天先加上1天,使12月份完整,加1年,月份变为1月,日再加上2天,得1月2日。加减思想类似。
    1474872-20190309204836406-1856350169.png
    1474872-20190309204905122-1026637180.png

  • (8)比较日期的关系

    做法:让用户依次输入年月日(为什么要依次输入,这样用户不容易输错,也不用输符号减少输错),用多个if语句进行比较
    用while循环在用户输入的时候进行查错,当用户输入数据不合理时(如平年2月29号)给出提示,并让用户再次输入。
    1474872-20190309210136296-1555627843.png

    3.结果展示

    1474872-20190309212506509-1922811343.png

    1474872-20190309221932678-328014169.png
    1474872-20190309222028755-897593223.png

4.调试碰到问题

  • 问题:记得头文件的使用,在宏定义,更改名字后没有引用头文件,导致程序不能运行。
    解决:把头文件加上就可以正常运行了。
  • 问题:在输出输入的时候的方向问题>><<,方向总是记错
    解决:遇到该行编译错误时,看一下>><<的方向有没有错误
  • 问题:在根据月份判断日数的时候用switch()写了好几行
    解决:在看到同学的代码后发现可以用数组存储好再一一对应,所以我在两个函数中用了两种不同做法进行对比,哈哈

转载于:https://www.cnblogs.com/linshuxin1761/p/10465739.html

你可能感兴趣的文章
POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)
查看>>
Linux中select poll和epoll的区别
查看>>
Cocos2d-x之MenuItem
查看>>
远程共享文件夹
查看>>
[转] C/C++中printf和C++中cout的输出格式
查看>>
swift 如何实现点击view后显示灰色背景
查看>>
【Android】3.9 覆盖物功能
查看>>
MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
查看>>
搭建SolrCloud的详细步骤
查看>>
svn的安装与使用
查看>>
基于Linux下Iptables限制BT下载的研究
查看>>
Android对话框-中篇-之建立自己的对话框
查看>>
华为交换机VRP用户界面配置及Telnet登录实验
查看>>
作为一个程序员我最大的遗憾
查看>>
《SolidWorks 2012中文版从入门到精通》一6.5 综合实例——斜齿圆柱齿轮
查看>>
storm集群的监控
查看>>
RHCE 6.0学习笔记-2 RHEL 6 使用光盘配置本地YUM源
查看>>
Mongodb定期备份
查看>>
Confluence 6 数据库设置
查看>>
刨根问底-struts-怎么加载配置的相应的信息
查看>>