zoukankan      html  css  js  c++  java
  • DS博客作业01--日期抽象数据类型设计与实现

    1.思维导图及学习体会

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

    1.2学习体会

    从这个学期开始开始学数据结构,先是接触了绪论,主要的题还在认识数据结构加以理解概念和进行简单的操作上,计算一些时间复杂度和空间复杂度,但通过做pta 上的题我发现,这里对数组和链表的要求也很多,我上个学期这方面的基础不好,所以这个学期要之前补这方面的知识。然后就是C++的语法,这个学期要自学,我在这方面也要下功夫。

    2大作业作业内容

    2.1设计日期的ADT类型

    ADT DATE
    {
    	数据对象:
    	    D={year,month,day|year,month,day均为实数}             //日期由年月日组成
    	数据关系:
    	    R={<year,month>,<month,day>|year为年,month为月,day为日} 
    	基本运算:	
    	   Status InitDate(DATE &D, int year, int month, int day); 
    	   //初始条件:存在日期 
               //操作结果:构造了三元组DATE,对年,月,日分别赋值,初始化日期 ,判断是否合法   
               string ReturnDate(DATE D);
               //初始条件:存在日期 
               //操作结果:返回日期,以xxxx-xx-xx的方式返回   
               Status JudgLeapYear(DATE D); 
    	   //初始条件:存在日期 
               //操作结果:判断是否为闰年,是则返回语句,是闰年,不是则返回语句不是闰年 
               string GetWeek(DATE D);  
               //初始条件:存在日期  
               //操作结果:根据日期,判断该日期是星期几 
    	   string GetMonth(Date D);
               //初始条件:存在日期 
               //操作结果:根据日期 ,判断月份,并返回月份的英文 
               Status AddDate(Date D, int theDay);
               //初始条件:存在日期 
               //操作结果:返回增加天数后的日期
               Status CompareDate(Date D);
               //初始条件:存在日期 
               //操作结果:比较日期的大小,根据关系返回日期差 
    }
    

    2.2数据抽象:头文件



    2.3数据封装说明

    (1).构造三元组DATE,并进行初始化日期,具有一定的容错提示

    做法:先将year,month,day变为D数组的一部分,然后分类,闰年与不是闰年,天数为31,30,28,29 天的,但是思路比较简单。



    (2).返回日期格式

    做法:直接用cout输入日期

    cout<<year<<" "<<month<<" "<<day<<endl;
    

    (3).判断是否为闰年

    做法:使用了常见的判断闰年的条件

    (4).判断该存在日期为星期几

    做法:利用基姆拉尔森计算公式,根据年月日,判断为星期几,并使用switch case,返回该星期的英文

    (5).返回该日期所在月份的英文

    做法:定义字符串函数,用switch case 返回改月份的英文

    (6).比较日期的大小,根据关系返回日期差

    做法:写两个函数求日期大小,一个传参为输入的年月日,一个传参为DATE,在写一个函数,输入日期,比较大小并通过返回日期差,看出大小。


    (7).主函数部分



    2.4结果展示

    input.txt 文件

    输入界面

    out.txt 文件

    2.5调试碰到问题

    Q1:C++语法不清楚,比如文件怎么读入写入和简单的输入输出?
    A1:通过询问同学和从网上查找资料。

    Q2:在编译过程中会不断循环000是闰年?
    A2:把判断日期是否合法中的D[0]改为year等。虽然我不是很懂为什么。

    Q3:编译成功后无法读取到文件内容并写入out文件?
    A3:第一开始我的input和out文件和我的代码都放在一个文件夹里,后来把他们从文件夹里拿出来后程序就能正常读取文件。

  • 相关阅读:
    使用 Nginx 内置 $http_user_agent 来区分( 电脑 pc、手机 mobile、平板 pad )端的内容访问
    原创《开源一个用 vue 写的树层级组件 vue-ztree》
    原创《weex面向未来的架构》
    原创《如何用vue来轻松的驾驭 html5 webapp的页面体验》
    Pdf Convert Image 的解决方案
    原创《分享(Angular 和 Vue)按需加载的项目实践优化方案》
    .npmrc 实用小技巧
    使用Tampermonkey,实现Gitlab禁用自我Merge的功能
    vue 之 render 函数不能渲染非全局自定义函数-方案
    反射、注解和动态代理
  • 原文地址:https://www.cnblogs.com/20000519yxn/p/10501801.html
Copyright © 2011-2022 走看看