C++汽車(chē)渡口模擬(數(shù)據(jù)結(jié)構(gòu))_第1頁(yè)
C++汽車(chē)渡口模擬(數(shù)據(jù)結(jié)構(gòu))_第2頁(yè)
C++汽車(chē)渡口模擬(數(shù)據(jù)結(jié)構(gòu))_第3頁(yè)
C++汽車(chē)渡口模擬(數(shù)據(jù)結(jié)構(gòu))_第4頁(yè)
C++汽車(chē)渡口模擬(數(shù)據(jù)結(jié)構(gòu))_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)汽車(chē)渡口管理模擬小牧童原作(2011-9-20)題目:某汽車(chē)輪渡口,過(guò)江渡船每次能載10輛車(chē),每10分鐘有一個(gè)渡輪到達(dá)。過(guò)江車(chē)輛分為客車(chē)與貨車(chē)。上渡船有如下規(guī)定:客車(chē)先于貨車(chē)上船,每上4輛客車(chē)允許上一輛貨車(chē);若等待的客車(chē)數(shù)不滿(mǎn) 4輛,則以貨車(chē)代替。試編寫(xiě)程序,模擬渡口的管理,統(tǒng)計(jì)客車(chē)與貨車(chē)的平均等待時(shí)間。設(shè)車(chē)輛到達(dá)服從均勻分布,參數(shù)由用戶(hù)指定。實(shí)際效果:(二)主程序:/文件名:FerrySimlatorTest.cpp/汽車(chē)渡口管理模擬測(cè)試程序#includeusing

2、 namespace std;#include FerrySimulator.hint main()FerrySimulator sample;cout 汽車(chē)平均等待時(shí)間: sample.get_automobileAvgWaitTime() endl;cout 貨車(chē)平均等待時(shí)間: sample.get_truckAvgWaitTime() endl;return 0;(三)渡口模擬類(lèi)/文件名:FerrySimulator.h/渡口模擬類(lèi)的定義#include using namespace std;#include LQueue.h#include time.hclass FerrySimu

3、latorprivate:int automobileArrivalLow; /汽車(chē)到達(dá)間隔時(shí)間下限int automobileArrivalHigh; /汽車(chē)到達(dá)間隔時(shí)間上限int truckArrivalLow; /貨車(chē)到達(dá)間隔時(shí)間下限int truckArrivalHigh; /貨車(chē)到達(dá)間隔時(shí)間上限int automobileNum; /汽車(chē)數(shù)量int truckNum; /貨車(chē)數(shù)量int automobileAvgWaitTime;/汽車(chē)平均等待時(shí)間int truckAvgWaitTime; /貨車(chē)平均等待時(shí)間public:FerrySimulator();void avgWaitTi

4、me(); /計(jì)算汽車(chē)和貨車(chē)平均等待時(shí)間int get_automobileAvgWaitTime() return automobileAvgWaitTime; /返回汽車(chē)平均等待時(shí)間int get_truckAvgWaitTime() return truckAvgWaitTime; /返回貨車(chē)平均等待時(shí)間;FerrySimulator:FerrySimulator()cout n*模擬開(kāi)始*n endl;cout automobileArrivalLow automobileArrivalHigh ;cout truckArrivalLow truckArrivalHigh ;cout

5、automobileNum ;cout truckNum ; srand(time(NULL); /初始化隨機(jī)數(shù)發(fā)生器avgWaitTime();void FerrySimulator:avgWaitTime()int Number = 1, eventTime = 0;int currentTime=0;int automobileTotalWaitTime=0;int truckTotalWaitTime=0;LQueue automobileQueue;LQueue truckQueue;int i; for(i=0; iautomobileNum; +i) /生成所有的汽車(chē)到達(dá)事件cu

6、rrentTime += automobileArrivalLow +(automobileArrivalHigh - automobileArrivalLow + 1)*rand()/(RAND_MAX + 1);automobileQueue.enQueue(currentTime);currentTime=0;for(i=0; itruckNum; +i) /生成所有的貨車(chē)到達(dá)事件currentTime += truckArrivalLow +(truckArrivalHigh - truckArrivalLow + 1)*rand()/(RAND_MAX + 1);truckQueue

7、.enQueue(currentTime); currentTime = 10; /定義渡輪到達(dá)的時(shí)間while( !( automobileQueue.isEmpty() & truckQueue.isEmpty() ) )/先讓汽車(chē)上船while( !automobileQueue.isEmpty() & (Number=4) ) if(automobileQueue.getHead()currentTime) ) break; /在Number小于4而隊(duì)列不為空且隊(duì)首的值大于currentTime跳出循環(huán) /再讓貨車(chē)上船 while( !truckQueue.isEmpty() & (N

8、umber=5) ) if(truckQueue.getHead()currentTime) ) break; /在Number小于4而隊(duì)列不為空且隊(duì)首的值大于currentTime跳出循環(huán) Number = 1; /初始化下一艘船上車(chē)的數(shù)量currentTime += 10; /初始化下一艘船到達(dá)的時(shí)間 automobileAvgWaitTime = automobileTotalWaitTime/automobileNum; /求汽車(chē)平均等待時(shí)間truckAvgWaitTime = truckTotalWaitTime/truckNum; /求貨車(chē)平均等待時(shí)間(四)使用的類(lèi)1隊(duì)列/文件名:

9、LQueue.h/鏈接隊(duì)列類(lèi)LQueue的定義#include using namespace std;#include queue.htemplateclass LQueue:public queueprivate:struct node /定義結(jié)點(diǎn)類(lèi)elemType data;node *next;node(const elemType &x, node *N=NULL) data = x; next = N; /初始化結(jié)點(diǎn)類(lèi)node():next(NULL)node();node *front, *rear; /定義隊(duì)首指針和隊(duì)尾指針public:LQueue() front = rea

10、r = NULL; void clear(); /清空隊(duì)列函數(shù)bool isEmpty() const return front = NULL; void enQueue(const elemType &x);elemType deQueue();elemType getHead(); void outPut() const; /打印整個(gè)隊(duì)列LQueue();/清空函數(shù)的現(xiàn)實(shí)template void LQueue:clear()node *tmp;while(front!=NULL)tmp = front;front = front-next;delete tmp;rear = front;

11、/入隊(duì)函數(shù)的現(xiàn)實(shí)template void LQueue:enQueue(const elemType &x)if(rear=NULL) front = rear = new node(x); /判斷隊(duì)列是否為空,然后作不同的處理else rear-next = new node(x);rear = rear-next;/出隊(duì)函數(shù)的實(shí)現(xiàn)template elemType LQueue:deQueue()node *tmp = front; elemType value = front-data;front = front-next;if(front=NULL) rear=NULL; /最后一個(gè)

12、元素出隊(duì)后,要將rear賦NULLdelete tmp;return value;/讀隊(duì)首結(jié)點(diǎn)的值template elemType LQueue:getHead()return front-data;/打印整個(gè)隊(duì)列函數(shù)的實(shí)現(xiàn)template void LQueue:outPut() constnode *tmp = front; while(tmp!=NULL) if(tmp-next=NULL) cout data;else cout data next;cout endl;/隊(duì)列類(lèi)析構(gòu)函數(shù)的現(xiàn)實(shí)template LQueue:LQueue()node *tmp;while(front!=NULL)tmp = front;front = front-next;delete tmp;(五)使用的抽象類(lèi)2隊(duì)列/文件名:queue.h/抽象類(lèi)queue的定義template c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論