



内部题切勿私自转发,如需转发请告知作者,如违背后果自负,万分感谢各位的帮助
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
这是一个整理表单的问题,需要去除重复的信息并整合成一个新的表单。具体地,你需要从文件中读取输入的表单,然后按照专精、编号、人名的顺序排序并输出。以下是解决这个问题的C++代码示例:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct Info {
string name;
string id;
string skill;
};
bool compareInfo(const Info& a, const Info& b) {
if (a.skill != b.skill) return a.skill < b.skill;
if (a.id != b.id) return a.id < b.id;
return a.name < b.name;
}
int main() {
ifstream fin("gloam.in");
ofstream fout("gloam.out");
int n;
fin >> n;
vector<Info> infos;
for (int i = 0; i < n; ++i) {
int Ai;
fin >> Ai;
for (int j = 0; j < Ai; ++j) {
string name, id, skill;
fin >> name >> id >> skill;
infos.push_back({name, id, skill});
}
}
sort(infos.begin(), infos.end(), compareInfo);
for (const auto& info : infos) {
fout << info.name << " " << info.id << " " << info.skill << endl;
}
fin.close(); fout.close();
return 0;
}
代码的主要思路是:首先读取输入文件中的数据,存储在一个结构体数组中。然后按照题目要求的顺序对结构体数组进行排序,最后输出排序后的结果到输出文件中。这里使用了STL中的ifstream和ofstream来进行文件的读写操作,使用了结构体来存储每条信息,使用了sort函数进行排序操作。注意这里使用了自定义的比较函数compareInfo来进行排序。