请帮我用c++解决这个问题Description 想调查某学校同学的生日,并且按照从大到小的顺序排序。 Input 输入有n+1行。 第1行为总人数n(n<=100); 第2行至第n+1行分别是每人的姓名(s),出生年(y)、月(m)、日(d)。 Output 输出有n行,即n个生日,从大到小的同学的姓名(如果有两个同学生日相同,输入靠后的同学先输出)。
时间: 2024-04-09 13:27:45 浏览: 131
我的C++大家帮我看看阿
下面是一个用 C++ 解决该问题的代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int year;
int month;
int day;
};
bool compareBirthdays(const Student& s1, const Student& s2) {
if (s1.year != s2.year) {
return s1.year > s2.year;
} else if (s1.month != s2.month) {
return s1.month > s2.month;
} else {
return s1.day > s2.day;
}
}
int main() {
int n;
cin >> n;
vector<Student> students(n);
for (int i = 0; i < n; i++) {
cin >> students[i].name >> students[i].year >> students[i].month >> students[i].day;
}
sort(students.begin(), students.end(), compareBirthdays);
for (int i = 0; i < n; i++) {
cout << students[i].name << endl;
}
return 0;
}
```
在这段代码中,我们首先定义了一个名为 `Student` 的结构体,其中包含学生的姓名、出生年月日信息。然后,我们通过读取输入构建一个包含学生信息的向量 `students`。
接下来,我们定义了一个用于比较生日的自定义比较函数 `compareBirthdays`,它会按照年、月、日的顺序进行比较。然后,我们使用 `sort` 函数对学生信息进行排序,排序时会使用 `compareBirthdays` 函数作为比较准则。
最后,我们按照排序后的顺序输出学生的姓名。
希望这个代码能够解决你的问题!如果还有其他问题,请随时提问。
阅读全文