📄 building.h
字号:
#include "main.h"
#include "Client.h"
#include "wqueue.h"
#include "Elevator.h"
void InOut(Elevator &E,WQueue w[Maxfloor+1][2]) {
//进行乘客的进出电梯活动
//注意:电梯时期要正确,否则乘客无法进入。
Client *p;
if(E.CallCar[E.floor]) //人要从电梯中走出
if(StackEmpty(E.S[E.floor])) E.CallCar[E.floor]=0;
else {//当前层的乘客栈非空,出电梯
Pop(E.S[E.floor],p);E.ClientNumber--;
InOutCount=InOutTime;
PrintClientInfo(*p,Out);
TotalTime+=Time-CInTime(*p);
DestoryClient(p);
}//else
if(E.CallCar[E.floor]==0) //有人要走入电梯
if(!QueueEmpty(w[E.floor][E.Stage])) {//若队列不空,继续进电梯
DeQueue(w[E.floor][E.Stage],p);
Push(E.S[COutfloor(*p)],p);
if(E.CallCar[COutfloor(*p)]!=1) {
//按下要去楼层的按钮
E.CallCar[COutfloor(*p)]=1;
}
E.ClientNumber++;
InOutCount=InOutTime;
PrintClientInfo(*p,In);
}//if
else {//乘客的进出活动已完成
if(E.Stage==Down) E.CallDown[E.floor]=0;//将相应的下降按钮取消
else E.CallUp[E.floor]=0;//将相应的上升按钮取消
}
}
void NewClient(Elevator &E,WQueue w[5][2]) {
//进入新乘客
Client *p;
CreatClient(p);//新的乘客
//将该乘客插入相应队列并按下相应按钮(Up/Down)
if(GoAbove(*p)) {
EnQueue(w[CInfloor(*p)][Up],p);E.CallUp[CInfloor(*p)]=1;
}
else {
EnQueue(w[CInfloor(*p)][Down],p);E.CallDown[CInfloor(*p)]=1;
}//else
}
/**********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -