电梯程序源代码


电梯程序源代码,多线程,有效状态自动机。包含课件讲解。
资源截图
代码片段和文件信息
#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个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)