DS博客作业01--日期抽象数据类型设计与实现
1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
在这两周的学习中,第一周由于复习补考内容没有太用心,但第二周状态还不错,虽然才刚刚接触数据结构,感觉数据结构挺有意思的,但也有很大的难度,需要用心去学,希望自己新学期新气象把,通过这次大作业,第一次用c++就做了个有点大的程序,很多语法都是直接百度或者照搬同学的,但基本都能理解了,C++确实有他的优势,c++还是很值得去学习的一门课。
2.大作业作业内容
2.1 设计日期的ADT类
ADT Date{
数据对象:
D = {year,month,day | year,month,day属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
int InitDate( Date &date ,ElemType year, ElemType month, ElemType day);
//初始化日期
void Leap( ElemType year , ofstream &write);
//判断是否闰年
int MonthName( Date date, ofstream &write);
//返回月份的英文名
int Week(Date date,ofstream &write);
//返回这个日期是星期几
int Add(Date date,ofstream &write);
void Logic(Date date,ofstream &write);
//比较当前日期与otherDate的逻辑关系
int Judge(Date date,ofstream &write);
//操作结果:判断是否是合法数据 是返回1 否则返回0
void Destroy(Date &date);
//销毁Date
}ADT Date
2.2.数据抽象:头文件
2.3数据封装说明
(1)构造三元组函数
动态申请内存,分别把3个变量放入数组date中。使用C++独有的new语法,简便。
(2)判断日期是否合法
根据if语句判断输入日期的合法性 分别返回1或0 主函数以循环结构进行接下来的函数运行。
(3)判断是否为闰月
做过多次的题目了。
(4)设计星期函数
通过吉姆拉尔森公式 和数组嵌套实现功能
(5)输出月份英文名函数
很简单啦,将CONST定义的二维数组表示就可以了
(6)返回当前日期增加days天的日期函数
注意进位 和闰年的特殊情况 再次使用闰年判断函数
(7)比较日期间的逻辑关系函数
通过多重与或关系分别进行三级(年月日)的比较最后得出逻辑关系结论。
3.结果展示
4.调试碰到问题
Q1 一开始C++语法基本不会
A1 百度加上同学的博客参考,懂得了大致的格式
Q2一开始最后一次循环会出现两次
A2 改了判断合法性函数 加了个! 原本的函数结束后值为0会再次进入循环。
Q3好多地方感觉可以改进 代码复杂效率低
A3参考同学的算法改进