寒假做業三

github連接

githubgit

提交日誌截圖
github

文件讀寫學習過程與心得

c語言課本的第十章詳細的介紹了c語言中如何對文件進行輸入與輸出,學習課本後我總結了一些要點:算法

  • stdio.h頭文件中有對FILE結構體類型的聲明,在程序中能夠直接用FILE類型名定義變量,如FILE f1;,定義了一個結構體變量f1用來存放一個文件的有關信息,FILE * fp;定義一個指向文件類數據的指針變量。
  • fopen(「文件名」,「使用文件方式」);其返回值爲指向文件的指針(文件信息區的起始地址),其中比較重要的使用文件方式有「r」只讀,「w」只寫,「a」追加。
  • fclose(文件指針);關閉文件使文件指針再也不指向文件。
  • 格式化的方式讀寫文件:
    • fprintf(文件指針,格式控制符,輸出列表);
    • fscanf(文件指針,格式控制符,輸入列表);
      學習完這些完成本次做業的文件輸入輸出綽綽有餘。

git commit信息的學習心得和體會

我以爲commit信息主要先掌握 : 這個最簡單的說明。 框架

  • type用來表面用途/說明意圖,主要有:
    • feat:新功能
    • fix:修補bug
    • docs:文檔
    • style: 格式(不影響代碼運行的變更)
    • refactor:重構(即不是新增功能,也不是修改bug的代碼變更)
  • subject是對本次commit目的的簡短描述。

編碼歷程

此次題目是上一次題目的升級版,因而我按照上次做業的思路開始構建框架,我先構造了兩個結構體類型分別表明指令和電梯,此次學習過文件的輸入輸出後,我運用fprintf函數構造了一個專門用來輸出的Print函數,方便在其餘功能中的調用,再按照老師提示構造了一個taximode函數,這個函數的功能是用來實現電梯接到一個乘客就直接把乘客送到目的地,途中再也不響應其餘乘客的需求也就是順序執行指令,這裏出現了一個bug,在該函數中我調用了Print函數,Print函數須要一個文件指針做爲參數,可是我沒有再taximode中定義,而是再main函數中定義,我將mian中的定義移到taximode函數中,完成了bug的修復。
  我作了一個在時間上的優化將指令按照時間排序,構造了一個Exchange函數來實現這一功能,用冒泡排序後進行了測試,而後我又進行了對重複指令過濾的優化,相同的指令若是直接使用taximode的話會被屢次處理,我設計了一個對比函數用來實現對兩條指令的對比,先無條件執行排序後的第一條指令,再用循環和條件語句來一直判斷該指令和後一條指令是否相同,相同則不處理後一條,不相同則處理後一條,並進行了測試,測試是出現了一個bug,經過debug,我發現我跳了一次循環,我發現我忘記了continue完,進入到下一循環for時,會先i++完再進入循環體,本身再循環體中加了i++,致使了會跳過循環的bug,修復後又進行了測試。我又想了想同一層上同一層下的優化問題,按照現實生活中的狀況,他仍是要進入電梯按一下的,電梯也是會停留一秒的,因此問題不是很大。
    關於busmode和進一步的優化,我想了一些可是和個人程序的切合度不是很高就被我推翻了,到如今仍是想不出一個很好的算法來解決這個電梯難題。
代碼行數 bug數 耗時
113 6 17h

相關測試與運行結果

  • 對排序函數的測試
    測試該函數是否使命令按照時間順序執行。


第一組爲五條按時間順序的命令,第二組爲前五條打亂事後的數據,輸出結果比較,發現徹底相同,排序函數的功能正常。函數

  • 對過濾重複命令這一功能進行測試
    測試是否可以成功過濾相同的命令。


兩次測試後重復的部分都被過濾了,過濾功能正常。學習

相關文章
相關標籤/搜索