• 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.调试碰到的问题。

  • 相关阅读:
    UPC2018组队训练赛第十二场
    ACM-ICPC 2018南京赛区网络预选赛
    UPC2018组队训练赛第十一场
    UPC2018组队训练赛第十场
    UPC2018组队训练赛第九场
    linux 用简单密码
    设置分辨率
    packstack
    rbenv
    elasticsearch
  • 原文地址:https://www.cnblogs.com/455j/p/10507233.html
Copyright © 2020-2023  润新知