病人顺序(程序与设计一)

 病人登记看病,编写一个程序,将登记的病人按照以下的原则排出看病的先后顺序:    (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;  
}