电梯思路

class Elevator {

private: int now;//表示电梯是否空闲;0为空闲,1为工作;

int floor;//表示电梯所在层数;最小为1;最大为21;

int director;//表示电梯方向,0为空闲;1为向上,-1为向下;

int people;//电梯内的人数;最多为14人;

int waite[21];//表示在正在等待使用电梯的所在人的层数;0为该层无人等待,1为该层有人等待;

int aim[21];//表示电梯所需要工作的目的层数;每个单位内,0为无人在该层停靠,N为有N人在该层停靠;

}

struct Floor{

int num; //该楼层待载人数

int aim[21]; //该楼层待载人数的目的地

} 页面有四个电梯,操作流程如下:

首先在n层点选自己所在的按键楼层n。waite[n]=1;

后弹出另一个窗口,要求选择欲前往楼层int x以及所搭乘电梯的编号e,点击确定;

e电梯默认初始停靠在一层,收到指示后,Elevator.now=1,改为工作状态;

遍历数组waite[],电梯行往该层,由于默认为第一层,所以电梯开始工作方向向上,derector=1;

停靠在该层三秒等待人上电梯,之后传输参数x=aim[x],使aim[欲到达目的地的楼层数]>0,aim[其他不停靠的楼层]=0;

x若大于floor,则电梯向上移动,director=1;小于则向下移动director=-1;

正常工作时,电梯驶向目的楼层,途中如经过楼层waite[]>0且欲前往目的地aim[]与电梯驶向相同的楼层,即所到达目的地aim[]与derector相同(如Floor.aim[x]>floor,Elevator.derector=1或者Floor.aim[x]<floor,Elevator.derector=-1),停靠,记录人数与aim[];

电梯每到达aim[]后,停靠,该楼层aim[]清零;此时判断,当director=1时,若存在x>floor,有aim[x]>0或者waite[x]=1,继续向上行驶;若所有的waite[]=0且aim[]=0时,电梯闲置。否则,则有y<Elevator.floor,存在aim[y]>0或waite[y]=1,则电梯变换方向向下,director=-1,电梯行至aim[y](y<floor)或waite[y](y<floor且该层人欲到达目的地与方向相同)。

进行以上重复工作,在每层楼判断方向;

posted @ 2014-03-09 10:05  也好,也罢  阅读(371)  评论(0编辑  收藏  举报