• 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参考同学的算法改进

  • 相关阅读:
    CentOS6.4 64位系统安装jdk
    oracle安装界面中文乱码解决
    亦步亦趋在CentOS 6.4下安装Oracle 11gR2(x64)
    CentOS 6.3(x86_64)下安装Oracle 10g R2
    Spring中映射Mongodb中注解的解释
    MongoDB 创建基础索引、组合索引、唯一索引以及优化
    MongoDB 用MongoTemplate查询指定时间范围的数据
    Java获取泛化类型
    SpringBoot标准Properties
    java如何获取一个对象的大小【转】
  • 原文地址:https://www.cnblogs.com/tmacly/p/10502743.html
Copyright © 2020-2023  润新知