main()
{
int floor;/*存放电梯当前层数。1234 和-1 为相应的层数,若为 0,则是电梯正在运行中
(必须记录电梯的状态,否则乘客怎么坐啊)*/
float time_total;/*总时间,为最后 printf 用。我理解的是最后 printf 出一个类似 xy 轴
的坐标图,x 轴是时间,y 轴是电梯和乘客的状态,用文字描述出来*/
int door[5];/*各个楼层是否有人等。程序运行的时候,可以扫描此数组,是否有乘客等
电梯*/
float time_dt_run;/*如果电梯在运行,记录电梯运行的时间。*/
struct per
{
int floor;/*此人会在哪层等电梯*/
float time;/*此人会在什么时间等电梯*/
}person[10];/*定义有 10 个人*/
time_total=0.0 /*初始化总时间为 0*/
while(1)/*一个死循环,扫描楼层状态,确定电梯如何运作,打印单位时间内各对象的状
态*/
{
for(i=0;i<5;i++) /*看哪层有人等,扫描的时间被忽略不计*/
{
if(door[i]==0)
continue;
else
{
/*如果电梯此刻在运行中,*/
/*如果电梯在开关门*/
/*如果电梯在非本垒层等人*/
if(floor!==0)
{
time_total+=abs(floor-i)*10;
for(j=0;j<10;j++)
{
if(time_total-person[j].time+30<time_wait) /*在可以容忍的时间内,假设可以容忍 30 秒*/
{
printf("time_total:%f,from %d to %d,person %d is
waiting",time_total,floor,i,j);/*在此时间内,电梯从第几层到第几层,person[j]在等电梯*/
}
else
{
time_total-=abs(floor-i)*10;/*超过乘客等待时间,无法忍受离去,因此电梯也无需再去执
行此任务,总时间减去相应的执行时间*/
}
}
}