电梯思路

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且该层人欲到达目的地与方向相同)。

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

转载于:https://www.cnblogs.com/barserker/p/3589576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值