请给出电梯仿真的c++代码
时间: 2023-06-12 19:05:14 浏览: 57
以下是一个简单的电梯仿真程序的C代码:
```
#include <stdio.h>
#define MAX_FLOORS 10 // 假设建筑有10层楼
#define MAX_PASSENGERS 20 // 假设每次电梯能容纳20人
typedef struct {
int current_floor; // 当前楼层
int target_floor; // 目标楼层
} Passenger;
int main() {
Passenger passengers[MAX_PASSENGERS];
int num_passengers = 0;
int current_floor = 1;
int direction = 1; // 1表示电梯正在往上,-1表示电梯正在往下
while (1) { // 不断循环模拟电梯运行
printf("当前在第%d层楼\n", current_floor);
// 让乘客上下电梯
for (int i = 0; i < num_passengers; i++) {
if (passengers[i].target_floor == current_floor) {
printf("乘客从电梯中下了,当前剩余%d人\n", num_passengers - 1);
// 将这个乘客从数组中移除
for (int j = i; j < num_passengers - 1; j++) {
passengers[j] = passengers[j + 1];
}
num_passengers--;
i--; // 注意要将i回退一步,否则可能会漏掉一个乘客
}
}
// 让等待的乘客上电梯
for (int i = 1; i <= MAX_FLOORS; i++) {
if (i == current_floor) {
continue; // 当前楼层不需要停
}
for (int j = 0; j < num_passengers; j++) {
if (passengers[j].current_floor == i) {
if (num_passengers < MAX_PASSENGERS) {
printf("乘客从第%d层楼上了电梯,当前共%d人\n", i, num_passengers + 1);
passengers[num_passengers] = passengers[j];
num_passengers++;
// 将这个乘客从数组中移除
for (int k = j; k < num_passengers - 1; k++) {
passengers[k] = passengers[k + 1];
}
num_passengers--;
j--; // 注意要将j回退一步,否则可能会漏掉一个乘客
} else {
printf("电梯已经满了,第%d层楼的乘客请等下一班电梯\n", i);
}
}
}
}
// 判断是否需要改变运行方向
if (current_floor == MAX_FLOORS) {
direction = -1;
} else if (current_floor == 1) {
direction = 1;
}
// 更新电梯当前楼层
current_floor += direction;
}
return 0;
}
```
注意,这个程序只是一个简单的电梯仿真,实际上还有很多需要考虑的因素,比如电梯的运行速度、电梯内部的按钮、电梯的故障处理等等。如果需要更完整的电梯仿真,需要加入更多的代码实现。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)