健康体检问题(结构体)c++/c简单普及题目

本文介绍了如何根据年龄和特定优先级规则对健康体检人群进行排序,首先考虑60岁及以上的老年人,然后按年龄从大到小,相同年龄再按登记顺序,非老年人则按登记顺序进行体检。
摘要由CSDN通过智能技术生成

问题 AL: 健康体检

时间限制: 1.000 Sec  内存限制: 128 MB
提交 状态

题目描述

健康体检是用医学手段和方法进行身体检查,这里包括临床各科室的基本检查,包括超声、心电、放射等医疗设备检查,还包括围绕人体的血液、尿便的化验检查。
健康体检是以健康为中心的身体检查。一般医学家认为健康体检是指在身体尚未出现明显疾病时,对身体进行的全面检查。
现在有一群人登记了要进行健康体检,尊老爱幼是中华民族的传统美德,现在让你将登记的人按照以下原则排出体检的先后顺序。
(1)老年人(年龄>=60)比非老年人优先;
(2)老年人按年龄从大到小的顺序体检,年龄相同的按登记的先后顺序排序;
(3)非老年人按登记的先后顺序体检;

输入

第1行,一个不超过100的正整数n,表示体检的人数;
接下来有n行,按照体检登记的先后顺序,每行输入一个人的信息,包括:一个长度小于10的字符串表示体检人的ID,一个整数表示病人的年龄,中间用空格隔开。

输出

按排好的体检顺序输出体检人的ID

样例输入 Copy

5

021075 40

004003 15

010158 67

021033 75

102012 30

样例输出 Copy

021033

010158

021075

004003

102012

#include<bits/stdc++.h>
using namespace std;
typedef struct bin
{
	char ti[10];
	int rei;
} bi;
bool cmp( bi p,bi q)
{
	if (p.rei >= 60 && q.rei < 60) {
        return true;
    } else if (p.rei< 60 && q.rei>= 60) {
        return false;
    }
    else
    {
    	if(p.rei == q.rei){
    		return p.ti < q.ti;
		}
		else{
			if(p.rei > q.rei)
			{
				p.rei > q.rei;
			}
		}
	}
}//这段代码是一个用于比较两个对象的函数cmp。函数接受两个参数p和q,这两个参数的类型是bi。函数返回一个bool类型的值。

//函数的主要功能是根据一定的条件比较两个对象p和q的属性,并返回比较结果。具体的比较逻辑如下:
//如果p的rei属性大于等于60且q的rei属性小于60,则返回true。
//如果p的rei属性小于60且q的rei属性大于等于60,则返回false。
//如果以上两个条件都不满足,则进入else语句块。 a. 如果p的rei属性等于q的rei属性,则比较p和q的ti属性
//,如果p的ti属性小于q的ti属性,则返回true,否则返回false。 b. 如果p的rei属性大于q的rei属性,则返回true,否则返回false。
int main(){
	int a,b,c,i;
	cin >> a;
	vector <bin> bi(a);
	 for (int i = 0; i < a; i++) {
       cin >> bi[i].ti >> bi[i].rei;
    }
    sort(bi.begin(),bi.end(),cmp);
	for(const auto& bin : bi){
		cout << bin.ti<<endl;
	}
	//这段代码是使用C++的范围for循环来遍历一个名为bin的容器(例如vector、array等)中的元素。
	//每次循环迭代,bin都会被绑定bi中的一个元素上。
//在这段代码中,使用了const auto& bin来声明循环变量person。其中,const表示bin是一个常量,不可修改;
//auto表示编译器会自动推导bin的类型;&表示bin是一个引用,可以避免拷贝开销。
//在循环体内部,cout << bin.ti  << endl;用于输出bin的ti属性值,并换行。这里假设bin是一个自定义的类或结构体,
//其中包含一个名为ti的成员变量。
return 0;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值