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

2022-05-19 22:48:12 字數 3693 閱讀 1065

1.開學學習了資料結構的緒論知識。按照學習通裡面所說的,學好這方面知識的方法是大量程式設計,practice makes better !practice makes better !practice makes better !重要的事情說三遍。

2.c++的語法剛開始接觸就要學著應用,有一點難度。目前我寫**主要是先用c語言寫出程式,編譯成功後再用c++的語句進行修改。這個方法有點笨,下次努力做到直接就用c++編寫程式。

3.c語言的知識有些遺忘,檔案和指標方面的知識一開始應用得不好,剛開始看不懂老師發的三元組**中的初始化。後來重新學習c語言的知識,恍然大悟。

4.開學初節奏有點快,緒論知識還沒學完就要開始學習線性表的知識。

adt date

資料關係:

r =

資料操作:

void newinformation(date&date,elemtype year,elemtype month,elemtype day);

//操作結果:構造三元組,year,month,day對三元組進行賦值。

elemtype islegal(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功。

//操作結果:判斷日期是否合法,如果合法在檔案output.txt寫入正確的格式,如果不合法,在檔案output中寫入相應的提示。

void isleap(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功,日期合法。

//操作結果:判斷年份是否是閏年,如果是閏年,在檔案output.txt中寫入是閏年,反之則寫入不是閏年。

void getweek(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功,日期合法。

//操作結果:在檔案output.txt中寫入相應的星期。

void coutenglishmonth(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功,日期合法。

//操作結果:在檔案output.txt中寫入相應的月份英文。

void addday(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功,日期合法。

//操作結果:使用者輸入需要新增的天數,計算新增天數後的日期,在檔案output.txt寫入新增前的日期,增加的天數和新增後的日期。

void compare(date date,ofstream& write);

//初始條件:三元組date存在,檔案開啟成功,日期合法。

//操作結果:使用者輸入要比較的日期,與原日期進行比較,在檔案output.txt.中寫入結果。

elemtype newislegal(date date);

//初始條件:三元組date存在。

// 操作結果:判斷日期是否合法,合法返回1,不合法返回0

做法:動態申請記憶體,分別把3個變數放入陣列date中。

做法:先判斷日期是否為閏年,確定二月的天數,再判斷月份是否大於等於1小於等於12,如果月份小於1或大於12,則判定不合法。如果月份合法,進入下乙個階段,日期與當月的最大天數進行比較,如果小於當月的最大天數且大於等於1,則判定日期合法,返回1。日期不合法,返回0。

做法:根據閏月的判定方式設計演算法,判斷閏月,在檔案中寫入相應的結果。

做法:根據星期判斷公式,得出該日期的星期,列舉一到星期天,根據運算結果在檔案中寫入相應的結果 。

做法:根據date得出月份,列舉每個月的英文,在檔案中寫入對應的月份。

做法:用year,month,day儲存日期並進行運算。用add儲存新增的天數。輸出提示語,提示使用者輸入天數。用乙個陣列monthday儲存一年中每個月的天數。把使用者輸入的天數和day相加,獲得總天數。如果總天數大於該月的最大天數則總天數減去該月最大天數,同時month加一,如果month>12則year+1,month-12。不斷迴圈直到總天數小於其對應月份的最大天數。值得注意的是,閏年需要不斷判定以確定二月的最大天數。

做法:一般來說比較日期要先比較年份,再比較月份,最後比較當月的日期。不妨假設一年有12個月,每個月有31天,算出總天數。乙個日期年份越大,日期也就越大,相同年份,月份越大,日期也就越大。year>month>day。前面的數對後面的數具有碾壓性優勢,可以通過前面算出的總天數進行比較大小,最後寫入檔案。

做法:參照函式(2)的做法,除去檔案寫入。

做法:負責開啟檔案,用乙個迴圈不斷讀取檔案達到檔案末尾時退出檔案,對各個函式進行統籌規劃,最後關閉檔案

q1:c語言知識遺忘很多,檔案和指標的知識幾乎不記得。

a1:用了乙個下午來複習,邊敲**邊看書。回想起一些c語言的知識。
q2:c語言的應用不熟練,不知道要如何設計乙個演算法,一直糾結著要怎麼樣避免檔案的不斷開閉問題。

a2:參考謝曉松的**,發現他的主函式設計得很巧妙,居然可以通過迴圈來解決檔案的開閉問題。自己思考了一會兒,想到可以通過傳遞檔案指標的方式來把資訊寫入檔案。
q3:c++的知識不熟練,**經常出錯。

a3:上面講到傳遞檔案指標的方式來寫入檔案,一開始我編寫了乙個c語言的程式,本想著把c語言的程式中的檔案指標變換為c++中的檔案指標來達到老師的要求。結果一改變檔案編譯就出現了錯誤,跳出了乙個新的頁面。經過不斷地除錯和查詢資料,發現c++的檔案輸出流不能像c語言指標那樣直接在函式中應用,需要新增引用符&。非常感謝曉松推薦的菜鳥**,那個**的c++知識很全,可以幫助我快速學習c++知識。曉松的**也給了我乙個很好的參考。
q4:沒有使用抽象資料型別,函式名命名不規範

a4:已改
q5:助教提出了一些問題,比如截圖不正確,指標沒有刪除。

a5:已改

DS部落格作業01 日期抽象資料型別

操作關係 r 資料操作 void getdate int date,int year,int month,int day 構造三元組date,並對year,mo潘nth,day賦值 int judge int date,ofstream write 判斷year,month,day,是否合法 voi...

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...