病人登记看病,编写一个程序,将登记的病人按照以下的原则排出看病的先后顺序: (1)老年人(年龄>=60岁)比非老年人优先。 (2)老年人按照年龄从大到小顺序看病,年龄相同的按登记的先后顺序排序。 (3)非老年人按登记先后顺序看病。输入:小于100的整数,表示病人的人数。 然后按照登记的先后顺序,输入病人的信息,包括病人的姓名,年龄输出:按排好的先后顺序输出病人的姓名
#include
#include
#include
using namespace std;
struct node{
char id[20];
int age;
int seq;
}a[110],b[110],temp;
int main()
{
int n,d;
char s[20];
int p=0,q=0,k=0;
int i,j;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>s>>d;
k++;
if(d>=60)
{
strcpy(a[p].id,s);
a[p].age=d;
a[p].seq=k;
p++;
}
else
{
strcpy(b[q].id,s);
b[q].age=d;
b[q].seq=k;
q++;
}
}
for(i=0;i<p;i++)
for(j=i+1;j<p;j++)
if(a[i].age<a[j].age)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
else if(a[i].age==a[j].age&&a[i].seq>a[j].seq)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i<q;i++)
for(j=i+1;j<q;j++)
if(b[i].seq>b[j].seq)
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
for(i=0;i<p;i++)
cout<<a[i].id<<endl;
for(i=0;i<q;i++)
cout<<b[i].id<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct data
{
string s;
int age;
}f[105];
int n;
bool comp(data a,data b)
{
return a.age>b.age;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>f[i].s>>f[i].age;
if(f[i].age<60)f[i].age=0;
}
stable_sort(f+1,f+n+1,comp);
for(int i=1;i<=n;i++)
cout<<f[i].s<<endl;
return 0;
}