DS博客作业01--日期抽象数据类型设计与实现

1.本章学习总结

1.1思维导图

1474718-20190310191252484-1259388163.png

1.2 本章学习体会

新学期,开始学数据结构,一开始并不能理解数据结构到底是干什么的,可能是在上学期程序设计语言的基础上学得更深吧,后来通过预习,差不多知道数据结构是干什么的,通俗点就是学程序小作文呗……
学习确实比较吃力,一定原因是上学期C语言肯可能学得不扎实吧,另一方面,乍一开始使用C++,确实不顺手,不过多亏了晓淞在博客里给了一个神奇的网站,对于使用C++特别有帮助
感觉大学学习中,很重要的一点是,好好利用百度。

2.大作业

2.1设计日期的ADT类型

ADT Date
{
数据对象:
D={year,month,day|year,month,day都属于int类型}
数据关系:
R={<year,montn>,<month,day>}
数据操作:
status InitDate(Date &date,int year,int month,int day);
//操作结果:构造一个三元组date,year,month,day被赋予值

status DestroyDate(Date &date);
//操作结果:销毁三元组
 
string PrintDate(Date date);
//初始条件:date存在
//操作结果:以1900/01/01的形式返回string

status IsLeap(Date date);
//初始条件:date存在
//操作结果,判断是不是闰年,是闰年返回TURE,不是闰年返回FALSE

string Aweekday(Date date);
//初始条件:date存在
//操作结果:判断这天是星期几,并以“星期几”的形式返回string

string Amonth(Date date);
//操作条件:date存在
//操作结果:以该月份的英文返回string
 

}ADT Date

2.2.数据抽象:头文件

1474718-20190310192435649-358738834.png

2.3数据封装说明

(1)构造三元组

将从文件中读取的数组传入函数,构造三元组。
1474718-20190310192636082-656432858.png

(2)输出日期

挺简单不解释
1474718-20190310193152757-1573532939.png

(3)判断闰年

之前也做过,不解释

1474718-20190310193135697-1175965189.png

(4)判断星期几

在CSDN上搜的,一个公式
1474718-20190310193239770-1670096065.png

(5)返回月份的英文

1474718-20190310193310839-1039972479.png

(6)判断日期大小

比较粗暴的一个方法,就是相当于都转化成天:年366+月31+日

比较粗暴。

1474718-20190310205533426-806483262.png

(7)加日期

这个是最难的函数,没有之一。
把单独的日和要加的日期加在一起,然后判断够不够一个月,够不够一年,逐级加,注意要判断闰年。
1474718-20190310205948240-2068192070.png

(8)主函数

1474718-20190310210010507-1378096410.png

1474718-20190310210017517-1998545014.png

2.3测试数据

1474718-20190310210300889-1831273728.png

1474718-20190310210307650-1141262934.png

1474718-20190310210319175-1097936964.png

2.4测试中遇到的问题

1.不熟悉C++的代码,一些算法也不清楚,看了晓淞推荐的网站,对C++基础的cin,cout有了一定了解,算法和文件函数的运用则查CSDN和博客园,

总之,代码写的好,CSDN不可少。

2.在判断星期几的时候,一开始没有定义year,month,day来临时存储数据,而是直接改了三元组的数据,然后就出BUG了,想了好久(大佬不要嘲笑我),睡了一觉,哦,我明白了

好好写代码吧,写完之后有神奇的事情发生,亲测。

转载于:https://www.cnblogs.com/qsls8643/p/10507196.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值