版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++汽车渡口模拟(数
据结构)
凫率派口管理模加小牧童原作(2011-9-20)S:某汽车轮渡口,过江渡船每次能载10辆车,每10分钟有一个渡轮到达。过江车辆分为客车与货车。上渡船有如下规定:客车先于货车上船,每上4辆客车允许上一辆货车;若等待的客车数不满4辆,则以货车代替。试编写程序,模拟渡口的管理,统计客车与货车的平均等待时间。设车辆到达服从均匀分布,参数由用户指定。(一)实际效果:XXX乂X X{度口•模拟开始XXXXXXXXXXXXXXXX请请请货达达量量1C到到数数to请请请货达达量量1C到到数数to车车车wkwy汽在也斡均ke入入入入y车an隔隔1031020230(二)主程序://文件名:Fen-ySimlatorTest.cpp//汽车渡口管理模拟测试程序#include<iostream>usingnamespacestd;#include"FeiTvSimulatoi.h"Jmtmam()(FenySimulatoisample;cout<v”汽车平均等待时间:”《saniple.get_automobileAvgWaitTime()«endl;coin<<”货车平均等待时间:”《sample.gectnickAvgWaitTmieQ«endl;retuni0;)(三)渡口模拟类〃文件名:FenySimulator.h〃渡口模拟类的定义#include<iostream>usingnamespacestd;#includenLQueue.hn#includeHtime.linclassFeiiySmiulator{private:mtautomobileAmvalLow;//汽车到达间隔时间下限mtautomobileAiTivalHigh;〃汽车到达间隔时间上限mtti-uckAiiivalLow;//货车到达间隔时间下限mttnickAiiivalHigh;//货车到达间隔时间上限mtautomobileNum;〃汽车数量mttnickNum;〃货车数量mtautomobileAvgWaitTune,汽车平均等待时间mttinckAvgWaitTime;〃货车平均等待时间public:FeiiySimulatoiQ;voidavgWaitTime();〃计算汽车和货车平均等待时间mtget_automobileAvgWaitTmieQ{retuniautomobileAvgWaitTline;}〃返回汽车平均等霜时间mtget_tmckAvgWaitTime(){retunitiuckAvgWaitTime;} 〃返回货车平均等待时间);FenySimulatoi::FenySimulatoi()cout«”w************模拟开始****************\n”«end!;coutw”请输入汽车到达间隔时间上、下限:cm»automobileAiiivalLow»automobileAnivalHigli;coutvv”请输入货车到达间隔时间上、下限:”;cm»tnickAnivalLow»tnickAinvalHigli;coutVV”请输入汽车数量:”;cin»automobileNum;cout请输入货车数量:”;cin»tmckNum;s】and(time(NULL));//初始化随机数发生器avgWaitTime();)voidFenySimulatoi::avgWaitTimeOmtNumber=1,eventTime=0;mtcunentTime=0;mtautomobileTotalWaitTime=0;mttnickTotalWaitTime=0;LQueue<iiit>automobileQueue;LQueue<iiit>tnickQueue;mti;for(i=0;i<automobileNum;十十i)〃生成所有的汽车到达事件{cunentTime+=automobileAiiivalLow+(automobileAiiivalHigh-automobileAinvalLow+1)*iand()/(RAND_MAX+1);automobileQueue.enQueue(cuiTentTime);)cuiTentTime=0;for(i=0;ivtruckNum;十十i)〃生成所有的货车到达事件{cunentTime+=tnickAnivalLow+(tnickAnivalHigh-tnickAmvalLow+1)*iand()/(RAND_MAX+1);tnickQueue.enQueue(cuiTentTime);)cunentTime=10;〃定义渡轮到达的时间while(!(automobileQueue.isEmptyO&tinckQueue.isEmptyO))(〃先让汽车上船while(!automobileQueue.isEmpty()&(Number<=4))(if(automobileQueue.getHead()<=cuiientTmie){automobileTotalWaitTime+=cuiientTmie-automobileQueue.deQueue();++Number;)或automobileQueue.isEmptyO||(automobileQueue.getHead()>cuiTentTime))break;〃在Numbei小于4而队列不为空且队首的值大于cunentTime跳出循环)
〃再让货车上船wlule(!tmckQueue.isEmpty()&(Number<=5))(if(tnickQueue.getHeadO<=cuiTentTime)(tnickTotalWaitTmie+=cunentTinie-tnickQueue.deQueueO;++Number;)if(tmckQueue.isEmpty()|(u-uckQueue.getHeadQ>cunentTime))break;〃在Numbei小于4而队列不为空且队首的值大于cuirentTime跳出循环)Number=1; 〃初始化下一艘船上车的数量cunentTinie十=10;//初始化下一艘船到达的时间)automobileAvgWaitTune=automobileTotalWaitTime/automobileNum;〃求汽车平均等待时间tmckAvgWaitTime=UuckTotalWaitTmie/tmckNum; 〃求货车平均等待时间)(四)使用的类1(四)使用的类1队列//文件名:LQueue.li〃链接队列类LQueue的定义#include<iostream>usingnamespacestd;#includeHqueue.hMtemplate<classelemType>classLQueue:publicqueue<elemType>{private:stmctnode{〃定义结点类elemTypedata;node*next;node(constelemType&x,node*N=NULL){data=x;next=N;}〃初始化结点类node():iiext(NULL){}〜node(){});node *rear;〃定义队首指针和队尾指针public:LQueue(){front=rear=NULL;}voidcleaiO;〃清空队列函数boolisEmptyOconst{retuinfront==NULL;}voidenQueue(constelemType&x);elemTypedeQueueQ;elemTypegetHeadQ;voidoutPut()const;〃打印整个队列〜LQueue0;};〃清空函数的现实template<classelemType>voidLQueue<elemType>:xleaiQ{node*tmp;while(fiont!=NULL){tmp=fiont;front=fiont->next;deletetmp;)rear=fiont;)〃入队函数的现实template<classelemType>voidLQueue〈elemType>二enQueue(constelemType&x)(if(ieai-=NULL)front=rear=newnode(x);〃判断队列是否为空,然后作不同的处理else{rear->next=newnode(x);rear=reai->next;))〃出队函数的实现template<classelemTypOelemTypeLQueue〈elemType>二deQueue。(node*tmp=flout;elemTypevalue=fiont->data;front=fiont->next;if(front==NULL)reai=NULL;〃最后一个元素出队后,要将iear赋NULLdeletetmp;returnvalue;)〃读队首结点的值template<classelemTypOelemTypeLQueue<elemType>二getHead。(returnfiont->data;)//打印整个队列函数的实现template<classelemTypOvoidLQueue<elemType>::outPut()const(node*tmp=flout;while(tmp!=NULL)(if(tmp->next=NULL)cout«tmp->data;elsecout«tmp->data«“-tmp=tmp->next;)cout«endl;)〃队列类析构函数的现实template<classelemTypOLQueue<elemType>::-LQueue(){node*tmp;while(fiont!=NULL)tmp=flout;front=fiont->next;deletetmp;}(五)使用的抽象类2——队列〃文件名:queue.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业用深水井挖掘施工合同3篇
- 工业楼房转租租赁合同3篇
- 安装伸缩缝施工合同3篇
- 改过自新的学生决心3篇
- 改进合同协议共筑美好未来3篇
- 录音授权合同范本
- 体育馆楼顶广告字施工合同
- 乳制品品控员聘用合同协议
- 学校防火门安装合同定案
- 沥青路面铺设耐久性能合同
- 动词不定式(专项练习)(解析版)
- DB34T 4912-2024二手新能源汽车鉴定评估规范
- 《建筑工程设计文件编制深度规定》(2022年版)
- 2024-2030年中国工控机行业需求状况及发展趋势分析研究报告
- 中医医案学习方法:医案的分类
- 小学《象棋》校本课程教案
- 公司会议室设备管理制度
- 风险保证金协议书
- 《膝骨关节炎针刀临床诊疗指南-公示稿》
- DL-T5440-2020重覆冰架空输电线路设计技术规程
- 脓毒血症教学查房
评论
0/150
提交评论