DS博客作业01--日期抽象数据类型设计与实现
1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
迷迷糊糊的开始学习便遇到了第一难关——时间复杂度和空间复杂度的计算,搞不懂什么叫做问题规模,开始认为是某段函数计算的次数,听课得知时间复杂度n的计算需要一定的数学逻辑,而求空间复杂度需要抓住临时变量这个问题。经过长假的洗礼,有很多较细的内容以及注意点都忘了,开学的第一次大作业也帮助我重新巩固了c语言的知识,也运用到了一些c++的知识(虽然作用不大),感觉现在写大作业不像往常那么吃力。希望新学期也能接触新的知识。
2.大作业作业内容
设计日期的ADT类型
ADT DATE
{
数据对象:
D={year,month,day | year,month,day属于ElemType类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
Status InitDate(DATE &date,ElemType year,ElemType month,ElemType day);
//操作结果:初始化日期,构造了日期,判断日期合法性
Status Return_Date(DATE &date);
//初始条件:日期date建立
//操作结果:返回给定格式的日期的年、月、日
Status Judge_LeapYear(DATE &date);
//初始条件:日期date已存在,且年月日满足基本条件
//操作结果:判断是否为闰年
Status Judge_Week(DATE &date);
//初始条件:日期date已存在,且年月日满足基本条件
//操作结果:返回这个日期是星期几
Status Add_day(DATE &date,int days);
//初始条件:日期date已存在,且年月日满足基本条件
//操作结果:返回月份英文单词
Status Return_ThenDate(DATE &date,int days);
//初始条件:日期date已存在,且年月日满足基本条件
//操作结果:返回当前日期增加days天的日期,返回存放操作后的日期的OtherDate数组
Status Compare_Date(DATE &date,DATE &OtherDate);
//初始条件:日期date已存在,且年月日满足基本条件
//操作结果:比较当前日期与otherDate的逻辑关系,返回bigger Or smaller代表逻辑关系
}ADT DATE
2.2数据抽象:
2.2.1Date.h
2.3数据封装说明
(1)主函数 :main.c
(2)构造三元组函数
(3)返回日期
(4)闰年判断函数
(5)星期判断函数
(6)英文月份返回函数
(7)增加天数计算函数
Status Add_day(DATE &date,int days);
{
int monthDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int Day_Sum;
Day_Sum=days+date[2];
for(int i=1;i<12;i++)
{
date[1]=i;
if(date[1]==2)
{
if(Judge_LeapYear(date))
{
if(Day_Sum>29)
date[1]++;
date[0]=Day_Sum-29;
else
date[0]=Day_Sum;
}
else
{
if(Day_Sum>28)
date[1]++;
date[0]=Day_Sum-28;
else
date[0]=Day_Sum;
}
}
if(date[1]==12)
{
if(Day_Sum>31)
date[0]+=1;
date[1]=1;
date[2]=Day_Sum-31;
else
date[0]=Day_Sum;
}
if(Day_Sum>monthDay[date[1]-1])
{
date[1]++;
date[0]=Day_Sum-monthDay[date[1]-1];
}
else
date[0]=Day_Sum;
}
return date;
}
(8)日期比较函数
3.结果展示
文件input.txt中的数据:
运行界面:
文件output.txt中的结果:
4.调试碰到的问题。