免費開始練習
moea_joint_essay 110年 [資訊] 資訊管理、程式設計

第 六 題

某電梯管理系統控制多台電梯,當某樓層之等待區按下按鈕時,會將其樓層號碼傳送到系統之共用 Queue中,系統會定時自共用 Queue中讀取一筆目標樓層號碼,並尋找離此目標樓層最近的電梯來提供服務。請使用下列所有的函式,來撰寫一選取電梯函式 SelElev,輸入為電梯的總數,其傳回為離目標樓層最近的電梯號碼,但當未選擇到電梯時,則傳回 0。另外,當電梯總數為 N時,電梯號碼為1到 N;樓層號碼為 1代表 1樓、2代表 2樓、0 代表地下 1 樓、-1 代表地下 2 樓(依此類推)。(20 分)
int getqueue() /* 自共用 Queue 中取得下一筆目標樓層號碼。其傳回為下一筆目標樓層號碼,當無資料時,則傳回 999。 */
int getcurfloor(int elevid) /* 取得指定電梯目前所在的樓層。輸入為電梯號碼,其傳回為此電梯目前所在的樓層,但當此電梯不提供服務時,則傳回 999。 */
📝 此題為申論題

思路引導 VIP

先呼叫 getqueue() 取得目標樓層,若為 999 回傳 0。接著歷遍每一台電梯 (1 到 N),透過 getcurfloor 取得位置,濾除 999(不提供服務),計算目標樓層與電梯當前樓層的絕對差值,找出差值最小的電梯號碼並回傳。

🤖
AI 詳解 AI 專屬家教

使用 C 語言風格撰寫的 SelElev 函式如下:

#include <stdlib.h> // 提供 abs() 絕對值函式
▼ 還有更多解析內容

🏷️ 相關主題

物件導向程式設計與系統分析核心概念
查看更多「[資訊] 資訊管理、程式設計」的主題分類考古題