#include <iostream>
#include <string>
using namespace std;
const int MAXSIZE = 100;
class CPeopleInfo //每个人的信息类
{
public:
string m_name; //名字
string m_number; //编号
int m_age; //年龄
int m_isMan; //性别
public:
void Input() //输入
{
cout << "请输入姓名、名单编号、年龄、性别(0 or 1), 用空格或换行隔开:\n";
cin >> m_name >> m_number >> m_age >> m_isMan;
if(m_isMan > 1) m_isMan = 1;
if(m_isMan < 0) m_isMan = 0;
}
int GetOrder() //分配科室
{
if(m_age >= 40) return m_isMan + 4;
else if(m_age >= 10) return m_isMan + 2;
else return m_isMan;
}
};
class Queue //队列
{
public:
CPeopleInfo q[MAXSIZE];
int front, end;
Queue() //循环队列,两个指针,一个首指针,一个尾指针
{
front = end = 0;
}
void Push(CPeopleInfo t) //入队列
{
if((end + 1) % MAXSIZE == front) return; //队满
end = (end + 1) % MAXSIZE;
q[end] = t;
}
void Call() //叫号
{
if(front == end) return; //队空
front = (front + 1) % MAXSIZE;
cout << q[front].m_name << endl;
cout << q[front].m_number << endl;
}
void Display(int order) //显示一个科室的排队信息
{
if(order == 0) cout << "儿科(女):\n";
if(order == 1) cout << "儿科(男):\n";
if(order == 2) cout << "青年科(女):\n";
if(order == 3) cout << "青年科(男):\n";
if(order == 4) cout << "老年科(女):\n";
if(order == 5) cout << "老年科(男):\n";
int num = 0;
for(int i = front; i != end; )
{
i = (i+1) % MAXSIZE;
if(q[i].GetOrder() == order)
{
cout << " " << num + 1 << endl;
cout << " 姓名: " << q[i].m_name << endl;
cout << " 编号: " << q[i].m_number << endl;
num++;
}
}
if(num == 0) cout << " 无人排队\n";
}
void Display(int order1, int order2) //显示一个科室的排队信息
{
int num = 0;
for(int i = front; i != end; )
{
i = (i+1) % MAXSIZE;
if(q[i].GetOrder() == order1 || q[i].GetOrder() == order2)
{
cout << " " << num + 1 << endl;
num++;
}
}
if(num == 0) cout << " 无病人\n";
}
void DisplayAll() //显示所有科室的信息
{
cout << endl << "排队信息:" << endl;
for(int i = 0; i < 6; i++)
Display(i);
}
void DisplayAll_D() //显示所有科室的信息,不分性别
{
cout << endl << "各科室总体排队信息:" << endl;
cout << "儿科:\n";
Display(0, 1);
cout << "青年科:\n";
Display(2, 3);
cout << "老年科:\n";
Display(4, 5);
}
};
int main()
{
Queue Q;
cout << "请输入总人数:\n";
int n;
cin >> n;
CPeopleInfo t;
for(int i = 0; i < n; i++)
{
t.Input();
if(t.m_age > 0 && t.m_age <=150)
Q.Push(t);
}
Q.DisplayAll();
Q.DisplayAll_D();
return 0;
}
#include <string>
using namespace std;
const int MAXSIZE = 100;
class CPeopleInfo //每个人的信息类
{
public:
string m_name; //名字
string m_number; //编号
int m_age; //年龄
int m_isMan; //性别
public:
void Input() //输入
{
cout << "请输入姓名、名单编号、年龄、性别(0 or 1), 用空格或换行隔开:\n";
cin >> m_name >> m_number >> m_age >> m_isMan;
if(m_isMan > 1) m_isMan = 1;
if(m_isMan < 0) m_isMan = 0;
}
int GetOrder() //分配科室
{
if(m_age >= 40) return m_isMan + 4;
else if(m_age >= 10) return m_isMan + 2;
else return m_isMan;
}
};
class Queue //队列
{
public:
CPeopleInfo q[MAXSIZE];
int front, end;
Queue() //循环队列,两个指针,一个首指针,一个尾指针
{
front = end = 0;
}
void Push(CPeopleInfo t) //入队列
{
if((end + 1) % MAXSIZE == front) return; //队满
end = (end + 1) % MAXSIZE;
q[end] = t;
}
void Call() //叫号
{
if(front == end) return; //队空
front = (front + 1) % MAXSIZE;
cout << q[front].m_name << endl;
cout << q[front].m_number << endl;
}
void Display(int order) //显示一个科室的排队信息
{
if(order == 0) cout << "儿科(女):\n";
if(order == 1) cout << "儿科(男):\n";
if(order == 2) cout << "青年科(女):\n";
if(order == 3) cout << "青年科(男):\n";
if(order == 4) cout << "老年科(女):\n";
if(order == 5) cout << "老年科(男):\n";
int num = 0;
for(int i = front; i != end; )
{
i = (i+1) % MAXSIZE;
if(q[i].GetOrder() == order)
{
cout << " " << num + 1 << endl;
cout << " 姓名: " << q[i].m_name << endl;
cout << " 编号: " << q[i].m_number << endl;
num++;
}
}
if(num == 0) cout << " 无人排队\n";
}
void Display(int order1, int order2) //显示一个科室的排队信息
{
int num = 0;
for(int i = front; i != end; )
{
i = (i+1) % MAXSIZE;
if(q[i].GetOrder() == order1 || q[i].GetOrder() == order2)
{
cout << " " << num + 1 << endl;
num++;
}
}
if(num == 0) cout << " 无病人\n";
}
void DisplayAll() //显示所有科室的信息
{
cout << endl << "排队信息:" << endl;
for(int i = 0; i < 6; i++)
Display(i);
}
void DisplayAll_D() //显示所有科室的信息,不分性别
{
cout << endl << "各科室总体排队信息:" << endl;
cout << "儿科:\n";
Display(0, 1);
cout << "青年科:\n";
Display(2, 3);
cout << "老年科:\n";
Display(4, 5);
}
};
int main()
{
Queue Q;
cout << "请输入总人数:\n";
int n;
cin >> n;
CPeopleInfo t;
for(int i = 0; i < n; i++)
{
t.Input();
if(t.m_age > 0 && t.m_age <=150)
Q.Push(t);
}
Q.DisplayAll();
Q.DisplayAll_D();
return 0;
}