用队列实现电梯程序c++
时间: 2023-11-25 14:08:49 浏览: 76
用C++实现的电梯程序
好的,以下是一个简单的电梯程序的队列实现,供您参考:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> elevator; // 电梯队列,存储要去的楼层
int current_floor = 1; // 当前所在楼层
int target_floor = 0; // 目标楼层
char choice; // 用户选择
while (true) { // 电梯程序循环
cout << "当前在" << current_floor << "楼层,请选择操作:\n";
cout << "a. 上行\n";
cout << "b. 下行\n";
cout << "c. 选择楼层\n";
cout << "d. 停止运行\n";
cin >> choice;
switch (choice) {
case 'a':
if (current_floor < 10) { // 最高10层
current_floor++;
}
break;
case 'b':
if (current_floor > 1) { // 最低1层
current_floor--;
}
break;
case 'c':
cout << "请选择要去的楼层:\n";
cin >> target_floor;
if (target_floor != current_floor) { // 排除选择当前楼层的情况
elevator.push(target_floor); // 将目标楼层加入队列
}
break;
case 'd':
cout << "电梯停止运行!\n";
return 0;
default:
cout << "输入无效,请重新输入!\n";
break;
}
// 判断是否到达目标楼层
if (!elevator.empty() && current_floor == elevator.front()) {
cout << "到达" << current_floor << "楼层!\n";
elevator.pop(); // 将已经到达的目标楼层从队列中移除
}
// 打印当前电梯状态
cout << "当前在" << current_floor << "楼层,电梯内还有" << elevator.size() << "个目标楼层等待。\n";
}
}
```
该程序利用队列存储要去的楼层,每次到达楼层时判断队首元素是否为当前楼层,如果是则将其移除队列。同时,程序还支持用户选择要去的楼层,将其加入队列等待电梯到达。
阅读全文