如何实现病人到医院看病,需要排队等候,先到先看。请编写程序模拟病人看病的过程。(1)后到的病人必修排在最后面;(2)排队过程中的病人可以随时查看自己前面还有多少病人等待看病;(3)系统能提示正在看病的后面一个病人作好准备。
理论描述
queue
#include <iostream>
#include <queue>
using namespace std;
int main() {
// 初始化病人队列和正在看病的病人
queue<int> patients;
int currentPatient = 1;
// 循环等待病人到达医院并进行看病
while (!patients.empty()) {
// 如果当前没有正在看病的病人,则将下一个病人加入队列中
if (currentPatient == patients.front()) {
patients.pop();
cout << "病人" << currentPatient << "已到达医院。" << endl;
currentPatient++;
} else {
// 否则,如果当前正在看病的病人已经看完病,则将其从队列中删除,并提示下一个病人作好准备
if (currentPatient % patients.size() == 0) {
cout << "病人" << currentPatient << "已完成看病,请下一个病人做好准备。" << endl;
patients.pop();
} else {
// 否则,如果当前正在看病的病人还没有看完病,则等待一段时间后再次检查是否需要提醒下一个病人作好准备
system("pause");
}
}
}
return 0;
}
来我看看
我们将数据类型(&新数组名)[数组的大小]
作为函数形参即可
#include<iostream>
using namespace std;
int func(int(&arr)[6])
{
return sizeof(arr);
}
int main()
{
int Arr[] = { 2,4,3,1,73,0 };
cout << func(Arr) << endl;
system("pause");
return 0;
}
输出的结果是 24 。
这种方法好处在使为程序更加安全,因为传入的数据如果不是我们想要的大小,就会禁止传入,从而报错。
坏处更加明显了,我们需要提前知道所使用数组的大小,并且对于不同的数组,需要有不同的函数实现,使得重复代码增加很多。
要实现医院排队看病系统的程序模拟,可以借助队列来进行病人的排队管理。以下示例代码演示了如何使用C++实现该功能:
#include <iostream>
#include <queue>
using namespace std;
class Hospital {
private:
queue<string> patients;
public:
void addPatient(const string& name) {
patients.push(name);
cout << name << "已加入排队等候" << endl;
}
void displayWaitingList() {
int size = patients.size();
cout << "当前等候人数:" << size << endl;
cout << "前面还有以下病人等待看病:" << endl;
queue<string> temp = patients;
while (!temp.empty()) {
cout << temp.front() << endl;
temp.pop();
}
}
void callNextPatient() {
if (patients.empty()) {
cout << "没有病人在等候" << endl;
} else {
string nextPatient = patients.front();
patients.pop();
cout << "请" << nextPatient << "进行就诊" << endl;
}
}
};
int main() {
Hospital hospital;
// 添加病人到队列
hospital.addPatient("张三");
hospital.addPatient("李四");
hospital.addPatient("王五");
// 查看当前等候人数和前面的病人
hospital.displayWaitingList();
// 调用下一个病人
hospital.callNextPatient();
return 0;
}
运行上述代码后,你将看到以下输出:
张三已加入排队等候
李四已加入排队等候
王五已加入排队等候
当前等候人数:3
前面还有以下病人等待看病:
张三
李四
王五
请张三进行就诊
在上述代码中,我们定义了一个Hospital
类,其中使用了queue
作为成员变量patients
来保存病人的排队顺序。addPatient
方法用于将病人加入队列,并打印加入成功的消息。displayWaitingList
方法用于显示当前等候人数以及前面等待看病的病人列表。callNextPatient
方法则用于调用下一个病人。
通过调用addPatient
方法添加病人,然后使用displayWaitingList
方法查看当前等候人数和前面等待的病人,最后使用callNextPatient
方法调用下一个病人进行就诊。
用这种方式,你可以动态地管理病人的排队顺序,并随时查看等待人数和下一个排队的病人。