为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟

机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟

2017-12-19 11页 doc 40KB 69阅读

用户头像

is_713593

暂无简介

举报
机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟 机场模拟实验报告 一( 实验目的 通过机场模拟实验,了解计算机模拟虚拟技术的应用,着重掌握队列这个数据结构 的应用,巩固已有的编程技巧,进一步提高编程水平,为以后的编写大型程序打下 基础。 二( 问题描述 修改机场模拟程序AirportSimulation,使之能反映准备降落飞机的所剩燃油情况。当 一架飞机到达准备降落时,按均匀分布随即生成该机可等待的时间单元数(反映所 剩燃油)。若该机无等待时间,立即降落,这可能导致等待降落队列中的其他飞机燃 油耗尽。若一...
机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟
机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟 机场模拟实验报告 一( 实验目的 通过机场模拟实验,了解计算机模拟虚拟技术的应用,着重掌握队列这个数据结构 的应用,巩固已有的编程技巧,进一步提高编程水平,为以后的编写大型程序打下 基础。 二( 问描述 修改机场模拟程序AirportSimulation,使之能反映准备降落飞机的所剩燃油情况。当 一架飞机到达准备降落时,按均匀分布随即生成该机可等待的时间单元数(反映所 剩燃油)。若该机无等待时间,立即降落,这可能导致等待降落队列中的其他飞机燃 油耗尽。若一个时间单元内有多架飞机燃油耗尽,也只能安排一架飞机降落,其余 的被认为出现坠落事故。运行模拟程序,显示因燃油耗尽导致飞机坠落事故之前机 场的繁忙程度,并采取什么措施防止燃油耗尽事故。 三( 编程流程 四( 关键代码以及相关注释 template class Queue { public: Queue ( int MaxQueueSize = DefaultSize); //~Queue(); Boolean IsFull( ); void Add(const Type& item); Boolean IsEmpty( ); Type* Delete( Type& ); int Size(); //返回队列的大小 void QueueFull(); void QueueEmpty(); void Reduce(); //当进入下个单元时降落飞机的等待时间减一 void Change(); //把队列中的等待时间最小的提到队列的首部 Boolean Broken(); //判断是否有元素等待时间小于零 private: int front, rear; Type* queue; int MaxSize; }; template Boolean Queue::Broken() { for(int k=front;k!=rear;k=(k+1)%MaxSize) { if(queue[k+1].wt<0) return TRUE; } return FALSE; } template void Queue::Change() { int k=front; do{ k=(k+1)%MaxSize; }while(queue[k].wt!=0&&k!=rear) ; if(queue[k].wt==0){ Type temp; temp=queue[front+1]; queue[front+1]=queue[k]; queue[k]=temp; } } template void Queue::Reduce() { for(int k=front;k!=rear;k=(k+1)%MaxSize) { queue[k+1].wt--; } } //飞机可描述为: struct plane { int id; // 编号 int tm; // 到达队列时间 int wt; //燃料剩余 }; //飞机的动作为: enum action { ARRIVE, DEPART }; class AirportSimulation { // 机场模拟。一个时间单元 = 起飞或降落的时间 public: AirportSimulation( ); // 构造函数 void RunSimulation( ); // 模拟运行 private: Queue landing; // 等待降落飞机队列,假设用环 // 型队列,实际长度为5 Queue takeoff; // 等待起飞飞机队列,同上 double expectarrive; //一个时间单元内期望到达降落飞机数 double expectdepart; //一个时间单元内期望到达起飞飞机数 int curtime; // 当前时间 int endtime; // 模拟时间单元数 int idletime ; // 跑道空闲时间单元数 int landwait ; // 降落飞机的总等待时间 int takeoffwait; //起飞飞机的总等待时间 int nland ; // 降落的飞机数 int nplanes; // 处理的飞机数 int nrefuse; // 拒绝服务的飞机数 int ntakeoff; // 起飞的飞机数 void Randomize( ); // 设置随机数种子 int PoissionRandom(double& expectvalue); // 根据泊松分布和给定期望值生成随机非负整数 plane* NewPlane(plane& p, action kind); // 建立新飞机的数据项 void Refuse(plane& p, action kind); // 拒绝服务 void Land(plane& p); // 降落飞机 void Fly(plane& p); // 起飞飞机 void Idle( ); // 处理空闲时间单元 void Conclude( ); // 模拟结果 }; void AirportSimulation::RunSimulation( ) { Boolean flag=FALSE; int pri; // 伪随机整数 plane p; for (curtime = 1; curtime <= endtime&&!flag; curtime++) { cout << "时间单元" << curtime << ":" ; pri = PoissionRandom(expectarrive); for (int i =1; i <= pri; i++) { //处理新到达准备降落的飞机 p = *NewPlane(p, ARRIVE); if (landing.IsFull( )) Refuse(p, ARRIVE); else landing.Add(p); } pri = PoissionRandom(expectdepart); for ( i =1; i <= pri; i++) { //处理新到达准备起飞的飞机 p = *NewPlane(p, DEPART); if (takeoff.IsFull( )) Refuse(p, DEPART); else takeoff.Add(p); } if (!landing.IsEmpty( )) { // 降落飞机 landing.Change(); p = *landing.Delete(p); Land(p); landing.Reduce(); if(landing.Broken()) { cout<
/
本文档为【机场模拟试验报告一.试验目的通过机场模拟试验了解计算机模拟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索