资源简介

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

资源截图

代码片段和文件信息

#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个文件信息

评论

共有 条评论