电梯程序源代码,多线程,有效状态自动机。包含课件讲解。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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个文件信息
#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个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)