资源简介
电梯程序源代码,多线程,有效状态自动机。包含课件讲解。
代码片段和文件信息
#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++
相关资源
- 绘图软件源代码
- JNative的包、源代码、doc文档一次性放
- 三维水淹模型源代码
- 安卓 背单词 含源代码 词库 编辑功能
-
优秀xm
l程序设计(学生信息管理) - 企业人事管理系统源代码
- 2018年ACM国际大学生程序设计竞赛真题
- 在线报名开源代码
- libpng源代码
- LabVIEW程序设计模式
- cocos2dx-3.0正式版源代码+完整资源 微信
- 贵美商城源代码包含素材
- ios仿购物系统源代码
- ACM大学生程序设计竞赛在线题库精选
- B+树的源代码
- 基于STM32的AD9851并行源代码
- 小区物业管理系统_毕业论文文档及源
- 飞机游戏需求分析
- 使用Struts2框架完成一个简单的留言板
- ROS 机器人程序设计
- 报刊订阅管理系统(数据库).
- 远程控制开源代码
- 数据结构与算法 张铭 资料包
- C程序设计 第二版 谭浩强著 清华大学
- 输入经纬度在百度地图上实现定位
- 都市供求信息网源代码
- 基于wincc的电梯监控系统
- linux c ftp源代码
- VNC开源 源码
- STM32+OV7725照相机源代码.rar
评论
共有 条评论