2 qq 36110657 qq_36110657 于 2016.09.11 13:35 提问

关于c语言的单门电梯程序以及模拟

用c写的单门电梯程序,利用c语言写出单门电梯的程序 还要进行图文模拟

1个回答

caozhy
caozhy   Ds   Rxr 2016.09.11 23:26
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言电梯模拟程序
C语言电梯模拟程序 一直以来我对电梯很感兴趣,起初认为用C语言不可能实现电梯模拟,需要多线程的支持,因此一直以来也没有想着做。最近数据结构习题书的这道题引起了我的注意,通过几天的努力终于实现了,先将程序的实现与大家分享出来。 在这个程序关键是处理好电梯运行状态转换与乘客进出的同步进行。好在题目要求每次输入时要输入下一个乘客到来的时间,使得程序变简单了。通过一个模拟时钟,根据模拟时钟判断该运行哪
c语言模拟电梯程序(可视化)
这个是一个电梯的模拟运行程序可视化显示电梯的运行状态
电梯模拟 用C写的 很好的一个图形化界面 人性化的设置
1. 楼层由上至下依次编号为9,8,7,6,5,4,3,2,1,0。每层都有向上和向下两个按钮,对应20个变量callup[0...9]和calldown[0...9]。电梯内10个目标层按钮对应变量out[0...9]。有人按下某个按钮时,相应的变量就增1,一旦要求满足后,该变量就减1。当有多人的需求相同时,相应的处理时间就增长,用于模拟真实的情况。 2. 电梯处于三种状态之一:UP(上行),DOWN(下行)和Idle(等候)。如果电梯处于Idle状态且不在1层超过20个时间单位时,则驶回1层。当电梯处于Idle状态时,一旦收到前往另一层的命令,就转入UP或DOWN状态,执行相应的操作。 3. 其它重要的变量有: floor----当前电梯外乘客所在楼层; calling----当前电梯外按下按钮的乘客所在的楼层; up_or_down----电梯外某层按钮的状态(向上箭头或向下箭头); waittime----电梯空闲时的等待时间; total----电梯内的总人数(上限为15人); 电梯的数据结构: state ---- 电梯的状态(UP,DOWN,IDLE) current ----- 电梯目前所处楼层 imovingto ---- 电梯的目标楼层 队列成员的数据结构: floor―――所在楼层 up_down―――目标方向(向上或向下) struct queue *next―――指向下一个成员 4. 【进入排队】先在等候队列中查找,若有信息相同(所在楼层相同,目标方向一致)的成员,则对队列无任何操作。若没有,则在队列末尾插入该人。 5. 【进入电梯】电梯根据人数停留一定时间单位,每进入一个人,从队列中删除该人,callup[ele.current]或者calldown[ele.current]减一,total加一。 6. 【走出电梯】电梯根据人数停留一定时间单位,每出去一个人out[ele.current]减一. 7. 【电梯的活动】 E1.[在一楼停候]若有人按下一个按钮,则调用相关函数(比如入队,置楼层标志位为1等)处理当前事件. E2.[改变状态]如果电梯处于Up(或Down)状态,但该方向的楼层却无人等待,则要看反方向楼层是否有人等待,而决定置State为Down(或Up)还是Idle。 E3.[让人出入]如果电梯不空且out[ele.current]!=0时,则电梯等候在该楼层出电梯的人离开。接着检验在该楼层是否有等候前往同一方向去的乘客,若有则等候他们进入电梯。总原则是先下后上。 E4.[在某楼层(非1楼)停候]若电梯到达目标楼层后,队列为空,则电梯在该楼层停候一定时间,在停候期间若有新的呼叫,则立即转入处理程序处理,否则返回一楼停候。 8. 电梯在上升或下降过程中需要不停地对当前方向上的最终楼层作调整。比如当前向上,最终楼层为6楼,而有乘客在8楼按了按钮,则最终楼层调整为8楼。相反方向同理。
c语言,电梯模拟
<br />http://d125.d.iask.com/fs/800/1/296bb018bee00c30afc7b666bace3bac30034030/rar/%E6%88%91%E7%9A%84%E7%94%B5%E6%A2%AF.rar<br />此为邮电学员编写,上为下载链接,不知要不要登录sina会员。如要请给我留言。
用C语言写的电梯功能模拟程序
用c语言写的电梯模拟程序,对于初学c的人可能会有所帮助,贴出来供大家分享。。。。
C++类下的学习——模拟电梯的实现
实现功能模拟电梯的升降,对输入楼层进行排序判断在哪一楼层停留。 可控制停留间隔时间。代码实现#include<iostream> #include<unistd.h> #include<stdlib.h> #include<windows.h> using namespace std; class elevator{
电梯模拟程序C/C++算法实现
1、C++电梯模拟程序 2、关于电梯算法的C++实现
模拟电梯系统程序设计
八、 实验内容和要求: 要求根据下面的功能说明描述实现模拟电梯控制软件 (一)电梯配置 1. 共有1个电梯 2. 共有maxfloor层楼层。maxfloor=9。 3. 中间层每层有上下两个按钮,最下层只有上行按钮,最上层只有上行按钮。每层都有相应的指示灯,灯亮表示该按钮已经被按下,如果该层的上行或者下行请求已经被响应,则指示灯灭 4. 电梯内共有maxfloor个目标按钮,表示有乘客在该层下电梯。有指示灯指示按钮是否被按下。乘客按按钮导致按钮指示灯亮,如果电梯已经在该层停靠则该按钮指示灯灭 5. 另有一启动按钮(GO)。当电梯停在某一楼层后,接受到GO信息就继续运行。如果得不到GO信息,等待一段时间也自动继续运行。 6. 电梯内设有方向指示灯表示当前电梯运行方向。 说明:由于本次实验不使用可视化框架,所以无法作到从图形界面上获取按钮请求。因此电梯按钮的设计,不在图形界面上体现,仅用来设计键盘的模拟输入。 (二)电梯的运行控制 1.电梯的初始状态是电梯位于第一层处,所有按钮都没有按下。 2.乘客可以在任意时刻按任何一个目标钮和呼叫钮。呼叫和目标对应的楼层可能不是电梯当前运行方向可达的楼层。 3. 如果电梯正在向I层驶来,并且位于I层与相邻层(向上运行时是I-1层或者向下运行时是I+1层)之间,则因为安全考虑不响应此时出现的I层目标或者请求。如果电梯正好经过了I楼层,运行在I楼层和下一楼层之间,则为了直接响应此时出现的I层目标或者请求,必须至少到达运行方向上的下一楼层然后才能掉头到达I楼层(假设掉头无须其它额外时间),如果I楼层不是刚刚经过的楼层则可以在任意位置掉头,此时掉头后经过的第一个楼层不可停。 4. 电梯系统依照某种预先定义好的策略对随机出现的呼叫和目标进行分析和响应。 5. 乘客数量等外界因素(可能导致停靠时间的长短变化)不予考虑。假设电梯正常运行一层的时间是5S,停靠目标楼层、上下乘客和电梯继续运行的时间是5S。 6. 当电梯停靠某层时,该层的乘客如果错误的按目标或呼叫按钮都不予响应。 7. 电梯停要某一层后,苦无目标和呼叫,则电梯处于无方向状态,方向指示灯全灭,否则电梯内某个方向的指示灯亮,表示电梯将向该方向运行。等接到“GO”信号后电梯立即继续运行。若无GO信号,则电梯在等了上下乘客和电梯继续运行时间后也将继续运行。 8. 当一个目标(呼叫)已经被服务后,应将对应的指示灯熄灭。 (三)电梯运行的控制策略 以下是几个候选策略: 1.先来先服务策略: 将所有呼叫和目标按到达时间排队,然后一一完成。这是相当简单的策略,只需要设计一个将呼叫和目标排队的数据结构。因为该策略效率也很低,所以没有实际的电梯采用这种策略。 2. 顺便服务策略: 顺便服务是一种最常见的简单策略。这种策略在运行控制中所规定的安全前提下,一次将一个方向上的所有呼叫和目标全部完成。然后掉转运行方向完成另外一个方向上的所有呼叫和目标。 可以采用设定目标楼层的办法来实现这个策略,即电梯向一个目标楼层运行,但这个楼层可以修改。具体策略如下: 1) 修改目标楼层的策略: a.如果电梯运行方向向上,那么如果新到一个介于当前电梯所处楼层和目标楼层之间,又可以安全到达的向上呼叫或者目标,将目标楼层修改为这个新的楼层。 b.如果电梯运行方向向下,那么如果新到一个介于当前电梯所处楼层和目标楼层之间,又可以安全到达的向下呼叫或者目标,将目标楼层修改为这个新的楼层。 2)确定新的目标楼层: 如果电梯向上运行,当它到达某个目标楼层后,则依照以下顺序确定下一个目标楼层: a.如果比当前层高的楼层有向上呼叫或者目标,那么以最低的高于当前楼层的有向上呼叫或者目标的楼层为目标。 b.如果无法确定目标楼层,那么以最高的向下呼叫或者目标所在楼层为电梯当前目标楼层。 c.如果无法确定目标楼层,那么以最低的向上呼叫所在楼层为电梯当前的目标楼层。 d.如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那么电梯无目标,运行暂停。 如果电梯向下运行,依照以下顺序确定下一目标楼层: a.如果比当前层低的楼层有向下呼叫或者目标,那么以最高的低于当前楼层的有向下呼叫或者目标的楼层为目标。 b.如果无法确定目标楼层,那么以最低的向上呼叫或者目标所在楼层为电梯当前目标楼层。 c.如果无法确定目标楼层,那么以最高的向下呼叫楼层为目标楼层。 d.如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那么电梯无目标,运行暂停。 3)最快响应策略: 响应所有的现在存在的所有呼叫和目标所需时间(采用不同方案电梯停靠时间相同,所以不必考虑)最短的策略。 可选方案一是电梯先向上运行响应经过各层的目标和向上呼叫,再向下运行响应所有向下呼叫以及途经各层的目标,最后再向上响应剩余的向上呼叫。二是恰好相反,先向下,再向上,最后再向下运行。 由于呼叫和目标会随时增加,所以实际上有时这种策略并不好。另外有时这将导致电梯突然向相反的方向运行。为了防止经常性的改变方向,我们可以采用设定只有当原来的运行方向比相反方向的代价高20%的时候才切换方向。 4)最短平均等待时间策略: 假设每一呼叫楼层等待的人数和每一目标楼层走出电梯的人数相等。计算响应当前所有呼叫和目标全部乘客所需时间的总和(包括等待时间和电梯运行时间,对于提出呼叫而尚未进入电梯的乘客则只计算等待时间)。对于这种策略,基本上也是只有象3一样的两种选择方案。由于呼叫和目标会随时增加,所以实际上这种策略有时并不好,但它比最快响应时间策略较为稳定和高效。另外有时这将导致电梯突然向相反的方向运行。为了防止经常性的改变方向,我们可以采用设定只有当原来的方向比替代方向的代价高20%的时候才切换运行方向。 注意:除了先来先服务以外,我们不能预先设定固定不变电梯运行的目标楼层。 5)同学们也可以自己提出新的控制策略。 要求重点要实现顺便服务策略,应在一相对独立的程序块中实现控制策略,这样能方便地对其进行修改而不影响程序的其他部分。 (四)输入输出 1)输入: 就是一系列的呼叫和目标。输入可以采用两种方法: a.以键盘输入呼叫和目标。例如我们可以设定如下:当敲击键1、2、3、4、5、6、7、8、9时表示电梯内有乘客按目标按钮,指定相应目标楼层。当敲击键Q、W、E、R、T、Y、U、I时表示8层到1层有上行呼叫请求。当敲击键A、S、D、F、G、、H、J、K时表示9层到2层有下行呼叫请求。 b.将呼叫和目标写入一个正文文件,然后程序读取这些呼叫和目标数据后可以在没有人工干预的情况下模拟电梯运行情况。其中一个呼叫/目标占一行,格式如下: <操作时间>[空格]<呼叫目标>[回车] 操作时间,表示呼叫请求的发生时间,是以程序启动时刻为参照的相对时间。以四位的数字字符串表示,从0000开始,单位秒。 呼叫目标,和键盘输入的设定一致,占1个字节。 1、2、3、4、5、6、7、8、9时表示电梯内有乘客按目标按钮; Q、W、E、R、T、Y、U、I时表示8层到1层有上行呼叫请求; A、S、D、F、G、H、J、K时表示9层到2层有下行呼叫请求; 每个数据项之间用一个空白字符隔开。不必考虑检查数据的正确性。 2)输出: a.电梯运行的动画显示:包括显示各按钮指示灯的亮灭情况、电梯方向指示灯和电梯位置及运行情况。另:为方便查看电梯运行情况,需要在显示中划分一块区域,专门显示键盘输入的呼叫和目标数据。 b.电梯运行情况的记录(结果)文件。 记录文件也是文本文件,每一行表示一次停靠,包括以下内容: 停靠时间:开始停靠某楼层的时间,以整数表示,从小到大排列,占4个字节,从0开始,单位秒。 楼层:停靠的楼层,占一个字节(1-9)。 每个数据项之间用一个空白字符隔开。程序中不必考虑检查数据的正确性。 备注:老师会提供一组已经编制好的子程序以及一些给出的数据定义,它们的主要功能是表示电梯系统参数,模拟电梯运行以及处理各类信号的输入输出。要注意利用它们提供的一些控制显示和键盘输入的函数和过程来简化输入和输出(包括动画)的设计。当然也可以利用编程语言提供的函数和过程来完成输入和输出。 (五)基本的要求和较高的要求 以下内容仅供有余力的同学参考实现。 1.程序的运行方式: 如果输入从数据文件中取得,则程序的运行应该有两种方式,动画方式、快速方式和完全方式。如果输入从键盘获得,那么只能采用动画方式或完全方式,不能使用快速方式。 a.动画方式花费较长的时间来直观地模拟电梯运行。 b.快速方式则没有动画,只是生成记录文件。 c.完全方式花费较长的时间来直观地模拟电梯运行,同时生成记录文件。 基本要求只实现动画方式。 2.控制策略: 基本要求实现先来先服务和顺便服务策略,可以指定电梯模拟系统使用不同的策略。较高的要求是可以在多个策略之间由我们控制进行切换。 3.输入输出: 基本要求实现键盘输入、动画输出。 4.统计分析 统计分析每个乘客乘电梯花费的平均时间。 如果实现了多个策略,则可以对不同策略加以比较。 统计分析是较高要求,基本要求不必考虑此功能。 5. 程序的适应性考虑: 例如如何不要作很多修改就可以适应楼层数改变(例如增加到30层)等等。 程序适应性是较高要求,基本要求不必考虑此功能。 (六)程序总体结构 以下内容仅供参考。 我们可以在主程序中写如下两个过程调用: Configure; Simulation; 前者在进行模拟前设置一些参数,这比较简单。而后者则是进行仿真模拟,这相当复杂,所以下面我们就来讨论如何设计Simulation。 这一类的模拟仿真程序有一个共同的特点是要模拟某个系统在一段时间内的情况,所以我们很自然地要从时间上对该问题进行分解,就是说 Simulation() { Initialize;{初始化过程} do Lift_status();{计算电梯状态在这一时刻的变化,例如到达某层,就要设定为已经完成了该层的目标,同时将电梯停下来等} Writemessage();{输出信息(包括动画)} Getinput();{接收当前时刻的新输入(包括新目标和新呼叫) Control();{调用控制策略程序决定电梯该如何运动} Time=time+1;{推进仿真时间,假定每一秒电梯进行上述操作一次} While not endcondition; } 这就是可以模拟电梯系统的基本结构了!这个程序结构的基本思想就是模拟了电梯每个时刻做的几件事情,然后将时间向后推移一个时间单位,然后再做那几件事,于是就模拟了电梯的工作状态。
电梯运行模拟系统-C语言编写
[问题描述] 设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活 动体”构成的集合,虽然它们彼此交互作用,但它们的行为是基本独立的。在离散的模拟中, 以模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成 的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。 [基本要求] (1)模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层 由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层, 即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。 (2)乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一 旦等候电梯时间过长,他将放弃。 (3)模拟时钟从o开始.时间单位为o.1秒。人和电梯的各种动作均要耗费一定的时间 单位(简记为t),比如: 有人进出时,电梯每隔40t测试一次,若无人进出,则关门; 关门和开门各需要20t; 每个人进出电梯均需要25t, 如果电梯在某层静止时间超过300t,则驶回1层候命。 (4)按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列
【操作系统】C语言模拟操作系统实现磁盘调度算法——电梯调度算法
#include #include #include int *Init(int arr[]) { int i = 0; srand((unsigned int)time(0)); for (i = 0; i < 15; i++) { arr[i] = rand() % 200 + 1; printf("%d ", arr[i]); } printf("\n"); ret