设有一个可以停放N辆汽车的狭长停车场,它只有一个大门利用供车辆进出,车辆按到达停车场时间早晚依次可以从停车场最里面向大门处停放(最先到达的第一辆放在停车场最里面)。然后停车场已放满N辆车,则后来的车辆只能停在车场大门外的便道上等待,一旦停车场有车开走,在它之后进入停车场的车必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的未能进停车场就离去,允许它走,不收停车费,而且仍然保持在便道上的等待的车辆的次序。编制一程序模拟停车场的管理。
时间: 2024-03-22 10:40:29 浏览: 179
好的,我可以帮你编写这个停车场管理程序。首先,我们需要定义一些基本的数据结构和变量:
1. 一个整数变量N,表示停车场可停放的汽车数量。
2. 一个整数数组parking,表示停车场中当前停放的汽车,数组下标从0到N-1,数组元素为车辆的编号或标识。
3. 一个整数变量front,表示停车场中第一辆车的位置。
4. 一个整数变量rear,表示停车场中最后一辆车的位置。
5. 一个整数变量count,表示停车场中当前停放的汽车数量。
然后,我们可以设计以下几个函数来模拟停车场的管理:
1. int park(int carId):将编号为carId的车辆停放到停车场中,返回停车的位置,如果停车场已满,则返回-1。
2. int leave(int carId, int parkTime):将编号为carId的车辆从停车场中移除,计算停车费用并返回费用,如果停车场中不存在该车辆,则返回-1。
3. void show():展示当前停车场的状态,包括停放的车辆编号及停放位置。
下面是程序的实现代码:
```python
#include <iostream>
using namespace std;
const int N = 100; // 停车场大小
int parking[N], front = 0, rear = -1, count = 0; // 定义停车场相关变量
// 将车辆停放到停车场中,返回停车的位置
int park(int carId) {
if (count < N) { // 停车场未满
rear = (rear + 1) % N;
parking[rear] = carId;
count++;
return rear;
}
else { // 停车场已满
return -1;
}
}
// 将车辆从停车场中移除,计算停车费用并返回费用
int leave(int carId, int parkTime) {
int i = front, j = 0, cost = 0;
while (i <= rear) {
if (parking[i] == carId) { // 找到该车辆
cost = (parkTime - i + front) * 5; // 计算停车费用
for (j = i; j < rear; j++) {
parking[j] = parking[j + 1]; // 后面的车辆依次前移
}
rear--; // 停车场中车辆数量减一
count--;
break;
}
i++;
}
if (j > rear) { // 停车场中不存在该车辆
return -1;
}
return cost;
}
// 展示当前停车场的状态
void show() {
if (count == 0) {
cout << "停车场为空!" << endl;
return;
}
cout << "当前停车场状态:" << endl;
for (int i = front; i <= rear; i++) {
cout << "位置 " << i << " 停放车辆编号为 " << parking[i] << endl;
}
}
int main() {
int choice = 0, carId = 0, parkTime = 0, cost = 0;
while (true) {
cout << "请输入要进行的操作(1:停车,2:离开停车场,3:展示停车场状态,0:退出程序):";
cin >> choice;
switch (choice) {
case 1:
cout << "请输入要停放的车辆编号:";
cin >> carId;
if (park(carId) == -1) {
cout << "停车场已满,无法停车!" << endl;
}
else {
cout << "车辆停放在停车场位置 " << rear << "。" << endl;
}
break;
case 2:
cout << "请输入要离开的车辆编号:";
cin >> carId;
cout << "请输入车辆停放的时间(当前时间为0):";
cin >> parkTime;
if ((cost = leave(carId, parkTime)) == -1) {
cout << "停车场中不存在该车辆!" << endl;
}
else {
cout << "该车辆停放时间为 " << parkTime - front << ",停车费用为 " << cost << "元。" << endl;
}
break;
case 3:
show();
break;
case 0:
cout << "程序已退出!" << endl;
return 0;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
注意:该程序只是一个简单的停车场管理模拟,实际应用中还需要考虑更多因素,如停车场的实际大小、停车位的分配、停车费用的计算方式等等。
阅读全文