资源简介
电梯程序源代码,多线程,有效状态自动机。包含课件讲解。

代码片段和文件信息
#include“head.h“
extern int order;//电梯目标楼层
extern int floorpreFloor;//电梯当前楼层,之前经过的楼层
extern int outCmd[10][2];//电梯外部呼叫请求数组)第一个数代表有请求的楼层,第二个数代表方向
extern int inCmd[10];//电梯内的呼叫请求
extern char liftState;//电梯状态:五个
extern enum status {FREE GOUP GODOWN STOP};//枚举表示电梯状态
#define MAXFLOOR 9//最大楼层数
#define FREE 0//空闲状态
#define GOUP 1//上升状态
#define GODOWN -1//下降状态
#define STOP 2//停靠状态
/*此模块的问题:无法解决掉头后是否能停靠的问题*/
int control(void)
/*计算目标楼层,找到返回楼层,未找到返回0*/
{
int scanFloor;//当前扫描的楼层
int find=0;//找到目标楼层后变为楼层数
switch(liftState)
{
case FREE:
for(scanFloor=1;scanFloor<=MAXFLOOR&&find==0;scanFloor++)//若某一楼层有请求,即为目标楼层
{
if(inCmd[scanFloor]||outCmd[scanFloor][0]||outCmd[scanFloor][1])
{
find=scanFloor;
}
}
break;
case GOUP:
for(scanFloor=floor;scanFloor {
if((inCmd[scanFloor]||outCmd[scanFloor][0])/*&&isSafe(scanFloor)*/)
{
find=scanFloor;
}
else
{
find=order;
}
}
break;
case GODOWN:
for(scanFloor=floor;scanFloor>order;scanFloor--)
{
if((inCmd[scanFloor]||outCmd[scanFloor][1])/*&&isSafe(scanFloor)*/)
{
find=scanFloor;
}
else
{
find=order;
}
}
break;
case STOP:
if(preFloor {
for(scanFloor=floor;scanFloor<=MAXFLOOR&&0==find;scanFloor++)
//高层最低的向上呼叫或请求为目标
{
if(inCmd[scanFloor]||outCmd[scanFloor][0])
{
find=scanFloor;
}
}
for(scanFloor=MAXFLOOR;0==find&&scanFloor>=1;scanFloor--)
//最高的向下呼叫或请求为目标
{
if(inCmd[scanFloor]||outCmd[scanFloor][1])
{
find=scanFloor;
}
}
for(scanFloor=1;0==find&&scanFloor<=MAXFLOOR;scanFloor++)
//最低的向上呼叫为目标
{
if(outCmd[scanFloor][0])
{
find=scanFloor;
}
}
}
else//向下停靠
{
for(scanFloor=floor;scanFloor>=1&&0==find;scanFloor--)
{
if(inCmd[scanFloor]||outCmd[scanFloor][1])
{
find=scanFloor;
}
}
for(scanFloor=1;0==find&&scanFloor<=MAXFLOOR;scanFloor++)
{
if(inCmd[scanFloor]||outCmd[scanFloor][0])
{
find=scanFloor;
}
}
for(scanFloor=MAXFLOOR;0==find&&scanFloor>=1;scanFloor--)
{
if(outCmd[scanFloor][1])
{
find=scanFloor;
}
}
}
break;
}
return find;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-05-12 22:15 代码\
目录 0 2012-06-04 20:59 代码\第一版本\
文件 2545 2012-05-12 22:15 代码\第一版本\control.c
文件 1959 2012-05-12 22:42 代码\第一版本\getinput.c
文件 244 2012-05-12 22:15 代码\第一版本\head.h
文件 1178 2012-05-12 22:15 代码\第一版本\main.c
文件 8363 2012-05-31 11:51 代码\第一版本\print_message.c
文件 1920 2012-05-12 22:15 代码\第一版本\state_trans.c
目录 0 2012-06-04 20:59 代码\第二版本\
文件 32056 2012-05-30 10:51 代码\第二版本\GO已按.bmp
文件 32054 2012-05-30 10:49 代码\第二版本\GO未按.bmp
文件 2547 2012-06-02 23:20 代码\第二版本\control.c
文件 15787 2010-05-31 20:35 代码\第二版本\egg.h
文件 109906 2010-05-31 20:24 代码\第二版本\egg.lib
文件 282 2012-06-02 12:23 代码\第二版本\head.h
文件 1634 2012-06-02 14:10 代码\第二版本\initialize.c
文件 5391 2012-06-02 18:36 代码\第二版本\input.c
文件 1171 2012-06-02 22:51 代码\第二版本\main.c
文件 8934 2012-06-02 23:11 代码\第二版本\output.c
文件 2015 2012-06-02 23:27 代码\第二版本\state_trans.c
文件 25574 2012-03-29 12:24 代码\第二版本\上升.bmp
文件 20054 2012-03-28 16:24 代码\第二版本\上升状态.bmp
文件 25574 2012-03-29 12:23 代码\第二版本\下降.bmp
文件 20054 2012-03-28 16:24 代码\第二版本\下降状态.bmp
文件 20054 2012-03-29 22:38 代码\第二版本\停靠状态.bmp
文件 3458 2012-05-29 00:05 代码\第二版本\已上.bmp
文件 3310 2012-05-29 00:04 代码\第二版本\已下.bmp
文件 9126 2012-03-29 22:44 代码\第二版本\已底上.bmp
文件 24054 2012-03-28 15:21 代码\第二版本\已按1.bmp
文件 24054 2012-03-28 15:22 代码\第二版本\已按2.bmp
文件 24054 2012-03-28 15:22 代码\第二版本\已按3.bmp
............此处省略142个文件信息
- 上一篇:Spark快速大数据分析中文版PDF(带书签+笔记)
- 下一篇:notepadd++
相关资源
- DIR2病毒源代码(汇编语言编写)
- VC仿Windows记事本源代码
- 蓝牙源代码应用于LINUX
- Palm OS应用程序设计指南
- 2018西门子杯中国智能制造挑战赛逻辑
- bp神经网络源代码,可直接运行
- labview编程软件滤波器以及编写程序设
- 仿知乎界面小程序源代码
- 贪吃蛇源代码.fla
- dotnet 写字板 实验 源代码 不好请要不
- 图像二维小波变换的实现源代码
- 八三编码器设计 VHDL代码 简单,包附
- linux应用层的华容道游戏源代码
- 网上拍卖系统完整源代码
- CSMA/CD等动画演示加源代码
- silicon lab公司的收音IC SI47XX全套开发工
- 合同管理系统的源代码(附数据库)
- 用VC 编写的仿QQ聊天室程序源代码
- 单片机与温度传感器DS18B20的程序设计
- STM32F103 串口程序(完整版)
- VPC3_DPV1源代码,Profibus
- PB做的托盘程序(最小化后在左下角显
- 透明加密源码及说明
- 排队机叫号 源代码
- 五子棋C 源代码
- CAD LISP24个源代码
- 二叉树基本操作源代码
- 推箱子及人工智能寻路C 源代码
- opengl轮廓字体源代码
- 冈萨雷斯 数字图像处理 源代码(m文
评论
共有 条评论