飞机场调度程序分析
1
2
1
2
3
4
目录
程序测试
随机数的生成
程序流程分析
题目解析
(1)题目剖解:
请编写程序,模拟一个机场飞机降落和起飞的过程。
要求:一个小飞机场有1条跑道,在天上有一个队列的飞机准备降落,地上有一队列的飞机准备起飞,当然必须等天上的飞机全部降落完后才能开始起飞[1],其中降落队列和起飞队列中元素的数量都由随机数决定[2],起飞和降落需要一定时间[3]。在新飞机加入降落队列或者起飞队列时用随机数决定下一个飞机来的时间[4]。程序的输出要清楚的标明在每个时间单元中所发生的情况。每架飞机所携带的燃油所能支持的时间可以通过用户自定义或者随机数生成的方式形成。允许迫降的情况发生[5]。
输出:周期性输出如下内容:
a. 每条队列的内容
b. 平均起飞等待的时间[6]
c. 平均降落等待的时间
3
(2)题目分析:
[1].1条跑道,等天上的飞机全部降落完后才能开始起飞
理解:降落队列比起飞队列优先级高,在某时刻如果降落队列和起飞队列中都有飞机,则起飞飞机等待,而降落队列对头的飞机优先降落。直到降落队列为空,起飞队列对头的飞机才能起飞。
[2].降落队列和起飞队列中元素的数量都由随机数决定
理解:初始化时两队列中元素的数量是随机数(假定1—6架,可调整)
[3].起飞和降落需要一定时间
假定:起飞和降落都需要一个单位时间。
[4].在新飞机加入降落队列或者起飞队列时用随机数决定下一个飞机来的时间
理解:(一一对应)有新飞机加入降落队列时,随机生成下一架降落飞机的到达时间(相对/绝对)。新飞机加入起飞队列时,随机生成下一架起飞队列到达的时间(相对/绝对)。
在初始化时分别随机生成0时刻之后到达的第一架起飞和降落飞机的到达时间。
[5]考虑燃油,允许迫降情况的发生
理解:每架降落飞机维持一个剩油时间,当不是对列头的降落飞机剩油时间减为0时,该飞机需要插队到队列头,进行迫降。
[6]平均起飞等待的时间
理解:在某时刻的平均起飞等待时间= 所有成功起飞飞机等待的时间总和∕成功起飞飞机数目
4
(3)假定&&输入输出要求:
.初始化队列长度:1—6(可调整)
.两架起飞飞机到达的时间间隔:1—5(可调整)
.降落飞机到达队尾时剩油时间范围:4—6(可调整),为了观察迫降发生时程序运行,可将该值设定为:2—6。
(逻辑上的)
.当模拟时间结束时退出——正常退出
.当降落队列中同时多余一架飞机剩油时间降为0,需要迫降时,视系统崩溃,退出。——异常退出
:
.要求用户输入模拟的时间数
.对于各个随机数范围的设定可以手动输入,也可设置宏定义。
四输出要求:
.每个时刻输出题目中的a,b,c,额外输出该时刻是否有飞机达到队列(起飞/降落),是否有飞机离开队列(起飞/降落)。
(2).(额外)每按enter键一次显示一个时刻的信息。
5
(4)程序流程提示
初始化
时刻从0到end_time循环
打印此时刻的信息
是否有飞机到达?
判断该时刻采取何种行动
a
b
c
有降落飞机到达?
相应入队操作并显示消息
相应入队操作并显示消息
飞机降落
跑道空闲
飞机起飞
(此时刻采取的动作)
(用于平均时间的计算)
(此时刻采取的动作)
有起飞飞机到达?
6
7
要求:程序中有关随机数的假定
.初始化队列长度:1—6(可调整)
.两架起飞飞机到达的时间间隔:1—5(可调整)
.降落飞机到达队尾时剩油时间范围:4—6(可调整),为了观察迫降发
生时程序运行,可将该值设定为:2—6。
原理:C语言中随机数的产生
(1)伪随机:在C语言中,rand()函数可以用来产生随机数,但是这不是真真
意义上的随机数,是一个伪随机数,是根据一个数(我们可以称之为种子)为基准以某个递推公式推算出来的一系数。
(2)srand():srand()用来设置rand()产生随机数时的种子。通常利time(NULL)
的返回值作为srand()的参数来设置种子。——生成不可预见的随机数列。
问题:在初始化时刻几乎需要同时产生起飞队列和降落队列的长度的随机数,想
让它们的初始化长度有
飞机场调度程序分析 来自淘豆网m.daumloan.com转载请标明出处.