01 日期抽象資料型別設計與實現

2022-05-19 23:29:15 字數 2363 閱讀 7964

思維導圖如下:

上學期學的c語言是資料結構的基礎,資料結構就像是把c語言的語法連起來使用。比起上學期按題目要求打**,我們現在更要考慮**的時間複雜度和空間複雜度,要思考如何讓**達到最優,這個比單純解決題目要求更難,這個也是我們這個學期學習的重點,也是我們應該投入精力的部分。

adt date

資料關係:r=

資料操作:

status initdate(date &date,int year,int month,int day);

//初始化日期

//操作結果:構造日期資料結構date,其中 year, month, day分別為日期的年,月,日

status destroydate(date &date);

//初始條件:date存在

// 操作結果:銷毀date

string style(date date);

//初始條件:date存在

// 操作結果:將int型別日期轉變為字串,並返回年年年年-月月-日日格式

status islegal(int year,int month,int day);

//初始條件:year,month,day存在

// 操作結果:判斷日期是否合法,若合法返回ok,若不合法返回error

status isleapyear(int year);

//初始條件:year存在

// 操作結果:判斷年份是否為閏年,若是閏年返回yes,若不是閏年則返回no

string weekday(int year,int month,int day);

//初始條件:year,month,day存在

// 操作結果:判斷日期為星期幾,並返回星期字串

string month(int month);

//初始條件:month存在

// 操作結果:返回月份的英文

string adddate(date date,int adddays);

//初始條件:date存在

// 操作結果:求出增加天數後的日期,返回該日期的字串

status comparedate(date date,date otherdate);

//初始條件:date,otherdate存在

// 操作結果:比較日期的大小 ,按兩個日期之間的邏輯關係返回1,0,-1

common.h

存放自定義資料,使整個**的可讀性大大提高

做法:申請記憶體,構造三元組date

做法:用c++語法銷毀

做法:將int型別日期轉變為string型別,並進行拼接

做法:首先確定month的最大天數,再與day進行比較

做法:滿足能被4整除且不被100整除,或能被400整除的年份即為閏年

做法:利用基姆拉爾森計算公式計算星期幾 ,並返回對應字串

做法:switch語句

做法:先算年份,再算月份,最後算日

做法:先進行年份相比,若年份相同再比較日

小黑框input檔案內容:

out檔案內容:

-q3:函式傳入date(無&,並執行函式),但是返回主函式是date裡面的值已經被改變了,這是為什麼?

-a3:???還是不是很懂。

DS作業01 日期抽象資料型別設計與實現

資料關係 r1 資料操作 status initdate date d,elemtype year,elemtype month,elemtype day 操作結果 構造了三元組d,日期中的年月日分別為year,month,day。status leapyear date d,ofstream ou...

DS部落格作業01 日期抽象資料型別設計與實現

題目 試仿照三元組或複數的抽象資料型別設計乙個關於日期的抽象資料型別。抽象資料型別名為date。格式如 2019 2 26 2000 13 9 2018 9 10 上述資料可以自己增加。如 2019 2 26 2019 不是閏年 2019 2 26是星期二 2019 2 26月份是february ...

DS部落格作業01 日期抽象資料型別設計與實現

1.思維導圖及學習體會 上個學期因為本人水平不足,c語言的學習拖延了很多,導致現在的程式設計邏輯還是很差勁。我希望能盡力去彌補思維上的不足。現在又從c語言轉換成了c 兩者的區別更加多樣,想理解需要一定的努力。2.大作業作業內容 adt date 資料關係 r 資料操作 int initdate da...