Deadline:2018.04.22 22:00 pmhtml
課程地址:http://www.icourse163.org/course/PKU-1002029030
學習前兩章內容(從C到C++、類和對象基礎),並完成相應的章節測驗,而後將課程進度截圖上傳到藍墨雲班課。c++
做業地址:https://pintia.cn/problem-sets/985353690216259584/problemsgit
通過了寒假的兩次編程訓練,你們大多對於電梯調度已有了本身的思路,但同窗們的代碼還是C語言面向過程的風格。從本次做業開始,咱們將以面向對象程序設計的角度,從新思考這個問題。github
(注意:本次題目需求與寒假時有所不一樣!)算法
一棟3層的大樓(樓層編號0-2),設有一臺無限載重的電梯,初始時電梯停在0層。電梯移動1層的耗時爲1,在某一層停靠的耗時爲1(時間初始爲0)。電梯不容許未僕先知,必須在時間到了以後才能開始響應這條請求。
爲了使得電梯完成接送全部乘客的運行時間最短,請你編寫一個程序來進行電梯調度。編程
輸入文件的文件名爲 input.txt
,其中:第一行爲一個非負整數N
,表明乘客的請求數量;接下來N行,描述了這N個請求的信息,格式爲請求時刻 起始樓層數 去往樓層
。
保證請求時刻
是遞增的,且同一時刻同一樓層只會有一名乘客發出請求(也即不會出現同時且同樓層的多行輸入)。函數
/*input example*/ 2 0 1 2 1 2 1
輸出調度決策,輸出文件的文件名爲output.txt
,其中:每一行的輸出格式爲時刻 停靠樓層
。(初始時停在0層的狀態不輸出)
注意:「時刻」指的是在某層樓停靠的時刻,且不算入在該層的停靠時間。學習
/*onput example*/ 1 1 3 2 5 1
1.新建一個C++項目(名字取爲Elevator-scheduling)。測試
2.在這個項目裏添加一個Elevator類,用來描述電梯。設計
該類的成員變量和成員函數以下:(做爲參考)
member:
- queue < int > destinationQueue; //目的地隊列
- int currentFloor; //當前位置
- int indicator; //運行方向
function:
- goToFloor() //前往隊列首的樓層
- stop() //停靠在當前樓層
- updateDestinationQueue() //更新目的地隊列
5.在這個項目裏新建一個cpp文件,在其main裏面讀取文件輸入、建立Elevator對象以及輸出等等。(本次做業旨在熟悉c++的類和對象以及文件讀寫,可暫不考慮調度算法)
6.寫一篇隨筆,附上類圖,並描述整個過程當中碰到的全部困難(卡在哪些地方),以及解決的過程。要求在博客開頭貼出項目的github地址。
(類圖可參考北航同窗的優秀做業:http://www.cnblogs.com/HansBug/p/8694939.html)
本次代碼依然須要上傳Github。代碼必須遵循必定的代碼規範,要有註釋,可讀性儘量好。
提交到Github上的項目均須要創建一個名字爲BIN的文件夾,裏面必須含有可執行文件(以exe爲後綴),相關的依賴庫,以及輸入和輸出文件。請注意如下兩點:
./output.txt
)/ Elevator-scheduling / main.cpp / elevator.cpp / elevator.h ... / BIN / elevator.exe / input.txt / output.txt / Lib.dll (exe運行須要的動態連接庫文件,能夠沒有)
注意:在下一次的做業中,將引入匿名互測。
互測規則以下: