结构体

感染新病毒后,来医院就诊的病人越来越多,每位病人包括的信息如下:姓名、病重程度和年龄。 对于来就诊的病人,医院按照如下规则对病人进行排序并进行诊治,具体规则为:病重程度高的优先诊治,同样病重程度,优先诊治年龄大的,如果年龄也相同,优先诊治名字按照字典顺序排在前面的。现在给出n个病人的信息,请编程输出排序后病人的信息。
输入描述:
共n + 1行,
第一行,一个整数n(3≤n≤1000),表示n个病人,
第2至第n + 1行,每行为一个病人的信息,包括姓名(长度小于100)、病重程度和年龄,用空格分隔。
输出描述:
排序后病人的信息,共n行,每行为一个病人的信息,详见输出样例。
示例1
输入
复制
5
zhaoyi 9 66
qianer 9 68
sunsan 6 33
zhousi 9 68
lisan 6 32
输出
复制
qianer 9 68
zhousi 9 68
zhaoyi 9 66
sunsan 6 33
lisan 6 32
以下是使用 C++ 解决上述问题的代码:
cpp
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

struct Patient {
    string name;
    int severity;  // 病重程度
    int age;
};

bool compare(const Patient&amp; a, const Patient&amp; b) {
    if (a.severity > b.severity) return true;
    if (a.severity == b.severity) {
        if (a.age > b.age) return true;
        if (a.age == b.age) {
            return a.name < b.name;
        }
    }
    return false;
}

int main() {
    int n;
    cin >> n;
    vector<Patient> patients(n);
    for (int i = 0; i < n; i++) {
        cin >> patients[i].name >> patients[i].severity >> patients[i].age;
    }
    sort(patients.begin(), patients.end(), compare);
    for (int i = 0; i < n; i++) {
        cout << patients[i].name << &quot; &quot; << patients[i].severity << &quot; &quot; << patients[i].age << endl;
    }
    return 0;
}
代码解释
定义结构体和比较函数
首先定义了 Patient 结构体,用于存储病人的姓名、病重程度和年龄这三个信息。
然后定义了名为 compare 的比较函数,它接受两个 Patient 类型的常量引用作为参数,用于确定两个病人之间的先后顺序。按照题目给定的规则:
如果 a 病人的病重程度大于 b 病人的病重程度,那么 a 病人优先,返回 true。
如果病重程度相等,则比较年龄,若 a 病人年龄大于 b 病人年龄,a 病人优先,返回 true。
如果年龄也相等,就按照字典顺序比较姓名,姓名在字典顺序中排在前面的病人优先,即返回 a.name < b.name 的结果(字典序比较小的为 true,表示更优先)。
main 函数部分
在 main 函数中,先从标准输入读取表示病人数量的整数 n。
接着创建一个大小为 n 的 vector<Patient> 类型的容器 patients,用于存储所有病人的信息。
通过循环 for (int i = 0; i < n; i++) 依次从标准输入读取每个病人的姓名、病重程度和年龄,并存储到 patients 容器对应的元素中。
之后调用 sort 函数,传入 patients 容器的起始迭代器 patients.begin() 和结束迭代器 patients.end() 以及比较函数 compare,对 patients 容器中的病人信息按照定义好的规则进行排序。
最后再通过循环 for (int i = 0; i < n; i++) 依次输出排序后的每个病人的信息,格式为姓名、病重程度和年龄,每个信息之间用空格隔开,每行输出一个病人的信息。
这样,代码就能够根据题目要求,对输入的病人信息进行正确排序并输出,实现了医院对病人诊治顺序安排的模拟功能。
全部评论

相关推荐

饥饿的长颈鹿就要上岸...:简历五项结构 简历只放五项内容,顺序和格式如下: 一、个人信息 只写名字、电话、邮箱 不写性别、年龄、籍贯、政治面貌、微信等额外信息 二、教育经历 格式:学校名称 | 学历 | 专业 | 就读时间 从左到右排列,一行写完 如果专业和岗位对口,写1-2行主修课程;不对口就不写 学历如果不占优势,可以把教育经历放到简历靠后的位置 三、实习/项目经历 如果没有实习经历,全部写项目经历 每条经历格式:项目名 + 岗位名 + 任职时间段 下面写三到五条工作内容 每条工作内容开头必须用四个字概括,加粗,后面跟一条完整描述 所有描述必须用STAR法则来写(情境-任务-行动-结果) 每一条都要有数据支撑和具体成果 四、个人优势 可以写获得的奖项、证书 如果奖项不够,就写你熟练掌握的技能 每条也要有具体数据或成果支撑,不能空泛堆砌 五、整体要求 一页纸,不要超过一页 个人信息只写名字加电话邮箱 贝贝试一下这个方式写简历,我虽然没收到offer,至少收到了好几轮面试
点赞 评论 收藏
分享
xdm&nbsp;早上喝奶茶差点喷出来。事情是这样的,我们班有个哥们儿,简称&nbsp;L,去年秋招拿了字节sp,专业方向是后端。我们当时都震惊:这哥们儿平时课上从来不发言,期末小组作业基本是划水的那种,刷题平台&nbsp;commit记录我点进去看过,绿格子稀稀拉拉。但他面试一路绿灯。一面二面三面&nbsp;hr&nbsp;面,全过,给的还是sp。当时班级群里恭喜他的、问他经验的、约饭的,热闹了一周。他说自己"运气好,准备充分"。我们都信了,直到三月初他入职。入职第二周开始,班里另一个进字节的同学W(在隔壁组的)开始跟我他的不对劲。一开始是写代码慢,后来写不出来,再后来是组里&nbsp;mentor&nbsp;让他fix&nbsp;一个简单&nbsp;bug&nbsp;都搞了一下午没动静。最离谱的是上周。W&nbsp;说他们大部门搞了个新人分享会,让新人讲一下自己负责模块的设计思路。L&nbsp;上去讲了&nbsp;20分钟,全程念稿子,问答环节别人随便问一个"那你这里为什么用&nbsp;Redis&nbsp;不用&nbsp;Memcached",他直接卡&nbsp;30秒说"这个我回去再确认一下"。会后他&nbsp;mentor&nbsp;直接找&nbsp;leader&nbsp;谈,leader&nbsp;找&nbsp;hr&nbsp;谈,hr调出了他面试录像,全程对比口型和回答节奏,发现他二三面有大量时长在偷偷看屏幕外(推测开了双机位&nbsp;AI&nbsp;答题)。(这段是&nbsp;W后来转述给我的,他自己也是听他组里同事八卦来的)昨天下班前,W&nbsp;告诉我L&nbsp;被辞退了,让他自己走,不走就走仲裁但会发函到学校。L&nbsp;现在已经回学校了,朋友圈仅三天可见。我说真的,我不是个心眼小的人,但是我看到这个消息的时候真的有种"嗯,挺好"的感觉。去年秋招我投字节后端,简历挂。我准备了八个月,背&nbsp;八股&nbsp;+&nbsp;刷&nbsp;500&nbsp;题&nbsp;+项目改了三版,连面试机会都没拿到。班里这哥们儿凭着一个外挂上岸,最后还是被甩出来了。不是说作弊就一定会被发现,但是当面试拿到的&nbsp;offer远远超出真实能力的时候,迟早会有这一天。试用期三个月不是给你过家家的,是真的要写代码、要在会议上回答问题、要扛需求的。我现在反而有点同情他。同情他相信"上岸就是终点"。发出来不是为了嘲笑谁,就是想说给那些正在被身边作弊上岸的同学搞得很&nbsp;emo&nbsp;的&nbsp;uu&nbsp;们听——别急,回旋镖很长,但它一定会回来。你继续刷你的题,写你的项目,背你的八股。该是你的迟早是你的,不是你的早晚还得还回去。xdm&nbsp;共勉。
牛客12588360...:我不想评论面试方式,作弊是绝对不对的,但是你八股加刷题也不过是个做题小子,他穿帮纯粹是他菜,你也没有高明到哪里去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务