五、某銀行有多台取號機供民眾取號,每台取號機提供多項服務的取號,同一服務會依據各取號機之取號的先後時間,依序給予連續的號碼,且最小的號碼為1。請使用下列所有的函式來撰寫一取號函式GetNumber,輸入為服務代碼與鎖定號碼變數失敗的上限次數,其傳回為此服務的下一個號碼,但當鎖定號碼變數失敗超過其上限次數時,則傳回0。(15分)
int lock(int serviceid) /* 鎖定指定服務代碼的號碼變數。輸入為服務代碼,其傳回為是否鎖定成功,當鎖定成功時,則傳回 1,當鎖定失敗時,則傳回 0。 */
unlock(int serviceid) /* 解鎖指定服務代碼的號碼變數。輸入為服務代碼。 */
int get(int serviceid) /* 取得指定服務代碼的號碼變數之值。輸入為服務代碼。 */
set(int serviceid, int value) /* 設定指定服務代碼的號碼變數之值。輸入為服務代碼與此服務代碼的號碼變數欲設定之值。 */
sleep() /* 執行暫停 0 .1 秒 */
詳解 (共 6 筆)
111考生
詳解 #5622022
int GetNumber(int serviceid, int ErrorLimit){
int Number=0;
while(ErrorLimit--){
if(lock(serviceid)){
Number=get(serviceid)+1;//題意要求『傳回為此服務的下一個號碼』故必須先加1才對
set(serviceid, Number);
unlock(serviceid);
break;
}
else{sleep();}
}
return Number;
}
shang
詳解 #6212914
int GetNumber(int se...
(共 399 字,隱藏中)
前往觀看
Grace
詳解 #5931028
int GetNum(int serviceid, failedNum) {
set(servicedid, failedNum);
int count ==0;
while(true){
if(look(servicedid) == 0){
count++;
if (count == failedNum) {
sleep();
return 0;
}
}else {
unlock(servicedid);
return get(servicedid) +1; //下一號碼
}
}
}
只回答難題(除非別人回答太爛)
詳解 #6227145
Lin Jin
詳解 #6119886
int GetNumber(int se...
(共 564 字,隱藏中)
前往觀看
蟲不易
詳解 #5203149