|  首页  |  资讯  |  评测  |  活动  |  学院  |  访谈  |  专题  |  杂志  |  产服  |  
您现在的位置:硅谷网> 学院> 论文>

一个简单电梯运行模拟程序的C语言实现

2012-08-13 10:30 作者:杨 兰 来源:硅谷网 HV: 编辑: 【搜索试试
  硅谷网8月13日消息 《硅谷》杂志2012年第13期刊文称,通过C语言编程,实现一个简单的电梯运行模拟程序,是对数据结构中栈和队列,链表等知识点的一次实战应用,也可作为《数据结构》课程的典型案例来使用。
  电梯的运行过程是电梯本身与楼宇中的各楼层用户间的交互过程,电梯运行模拟程序,可以作为电梯实际控制程序的蓝本,帮助建筑师,规划楼宇层数和电梯使用效率,节省了资源和时间,对技术人员有一定的帮助意义。文章模拟一台用于十层建筑中的电梯运行状态,供电梯系统开发人员和数据结构学习者使用。
  1问题描述
  编写一个“模拟电梯运行”的程序。假设该大楼有10层,只有一部电梯运行,层层可停。电梯运行速度是每10秒一层,每个人进出花费1秒,电梯限乘8人。大楼每层每分钟最多有2人来等候电梯,来一个人的概率是0.5,来2个人的概率是0.3,不来人的概率是0.2,每个人上行的概率是(10﹣所在层数)/9,下行的概率是(所在层数﹣1)/9,上行的人在上行时进入电梯,下行的人在电梯下行时进入电梯。无论上行还是下行,进入电梯后在其他各层走出的概率相等,求电梯开动一小时后,各层排队等待上行和等待下行的人数。基本要求:①用随机数发生函数来构造概率函数;②给定所有数据后,模拟过程无间断的自动完成;③为简化问题,假定电梯从一层运行到十层,再从十层降到一层,层层都停。
  2算法思想
  每层来的人根据概率函数判断该人进入上行队还是下行队,电梯上行时,先是电梯里的人出链表(根据出的概率),再是队里的人进电梯(条件是电梯里的链表长小于等于8),离队,记录队长。下行时,出链表,队里的人进电梯,离队,记录队长。依次循环直到一个小时结束。统计一小时后等待上行的人数和下行的人数,模拟时间单位为秒。
  4存储结构设计
  电梯内部的人采用链表存储,等候电梯的人采用队列存储。设18个链式队列,前9个模拟顾客排上行队,后9个模拟顾客排入下行队,用指针数组表示队列,电梯内部人员用一个单链表存储。
  5模块划分及调用关系
  主模块及调用关系如下图所示:
  
  
  
  
  
  
  
  
  6电梯模拟系统主要模块的C语言实现
  程序中每分钟来1人的概率,2人的概率,3人的概率,分别用P1,P2,P3三个字符型常量来表示,用结构体变量LinkQueue定义顾客队列,定义链表LinkList用来来模拟电梯内部的情况,在整个程序的实现过程中还需要用到下列自定义函,他们的功能如下表,代码实现过程如下:(由于篇幅原因仅列举两个函数模块的源代码):
  
  自定义函数名称 函数功能
  intInitQueue(LinkQueue**M) 链队的初始化
  intEnterQueue(LinkQueue*M,ElemTypeOne) 元素排队
  intDeleteQueue(LinkQueue*M,ElemType*One) 元素出队
  intLengthQueue(LinkQueue*M) 队元素遍历并返回队的长度
  voidOverQueue(LinkQueue*M) 对元素的遍历--打印队元素
  intDestoryQueue(LinkQueue*M) 销毁队
  ListLength(LinkListL) 返回链表的长度
  intListInsert(LinkListL,inti,ElemTyper) 插入链表
  doublerand0to1() 产生0到之间的1个随机数
  
  模拟顾客来排队模块的实现代码
  voidwelcome(LinkQueue*M[])
  {
   doublea,b;
   ElemTyper;
   intn;
   for(inti=0;i<10;++i)
   {a=rand0to1();
    if(a<=0.2)n=1;
    elseif(a>0.2&&a<=0.5)n=2;
    else
    {n=0;
    return;}
    for(intj=0;j<n;j++)
    {b=rand0to1();
     if(b<(double)(10-i)/9)
     {r.i=out_num1(i);
      EnterQueue(M[i],r);}
     else
     {r.i=out_num2(i);
      EnterQueue(M[20-i],r);}
  }
   }
  }
  7程序调试及系统说明
  用户可根据实际情况,在程序中对概率进行修改,运行后可得到满足实际情况的统计结果。程序设计中有关指针数组的知识点较难理解,导易出现语法错误逻辑错误,需认真细心。
  8小结
  该程序结合本人课堂经验编写而成,可作为数据结构学习中的案例或作业布置给学生,考虑到程序的实现问题,模拟电梯运行的性能设计的较简单,如有需要还可改一步完善。
  作者简介:
  杨兰(1982-),女,陕西宝鸡人,本科(西安工业大学硕士在读),助教,宝鸡职业技术学院电子信息工程系,研究方向:软件开发与应用。(原文载于《硅谷》杂志2012年第13期,硅谷网及《硅谷》杂志版权所有,未经允许禁止转载)
  

  
  
【对“一个简单电梯运行模拟程序的C语言实现”发布评论】

版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
广告
相关
头条
硅谷网解密:4G网络中的微波传输解决方案 硅谷网解密:4G网络中的微波传输解决方案
在2013年12月4日,工信部向中国移动、中国联通、中国电信颁发TD-LTE(4G)经营许可之后……
·硅谷网解密:4G网络中的微波传输解决方案
·创意产业的批量化规律 工业造型方法论之加减
·《硅谷》杂志:浅谈电信运营商开展IPTV业务
·《硅谷》杂志:新型桌面搜索关键技术的研究与
·硅谷杂志:基于时间技术的搜索引擎排名算法
图文
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
最新
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·利用重力势能做功发电介绍和势能输出系统介绍
·李磊:新时代下电网调度自动化技术的发展分析
·提升企业竞争力以及企业人力资源管理优化思考
·《硅谷》杂志:采油分层测静压工艺技术浅究
热点
·判断连续时间系统的线性非时变性和因果性
·3DMAX+Vary室内漫游动画制作的技法浅析
·长期使人困惑的问题:TCP连接中断的实时检测
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·关于汽轮机油系统失火原因分析及防范措施的一
旧闻
·《科技与生活》杂志:钢铁厂厂址的选择
·硅谷杂志:化工生产过程中的DCS监控系统的应
·硅谷杂志:无线通信技术在调度通信中的应用
·颜海宙:谈谈工业锅炉节能运行的优化措施
·硅谷杂志:视频会议系统建设应用分析
广告
硅谷影像
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介绍
公关负责人离职背后:危机公关案例分析
公关负责人离职背后:危机公关案例分析
硅谷网解密:4G网络中的微波传输解决方案
硅谷网解密:4G网络中的微波传输解决方案
使用Autoit脚本在虚拟内存盘设置考试模拟系统
使用Autoit脚本在虚拟内存盘设置考试模拟系统
探秘开滦集团设备租赁管理系统的设计和实现
探秘开滦集团设备租赁管理系统的设计和实现
关于我们·About | 联系我们·contact | 加入我们·Join | 关注我们·Invest | Site Map | Tags | RSS Map
电脑版·PC版 移动版·MD版 网站热线:(+86)010-57255600
Copyright © 2007-2020 硅谷网. 版权所有. All Rights Reserved. <京ICP备12003855号-2>