//作业1:实验6,建立结构体数组,输入冬奥会各个国家奖牌数量,存储在文件“natial.txt” //中;读取文件数据,并按金牌数量排序,将排序后的结果存入一个新文件 //“national_sort.txt”中,并查看结果与实际结果
时间: 2023-07-15 21:10:38 浏览: 76
下面是代码示例:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
struct Nation {
string name;
int gold;
int silver;
int bronze;
};
bool cmp(Nation a, Nation b) {
return a.gold > b.gold;
}
int main() {
const int num_nations = 10;
Nation nations[num_nations];
string file_name = "national.txt";
ifstream fin(file_name);
if (!fin.is_open()) {
cout << "Error: Failed to open file " << file_name << endl;
return 0;
}
for (int i = 0; i < num_nations; i++) {
fin >> nations[i].name >> nations[i].gold >> nations[i].silver >> nations[i].bronze;
}
fin.close();
sort(nations, nations + num_nations, cmp);
string output_file_name = "national_sort.txt";
ofstream fout(output_file_name);
if (!fout.is_open()) {
cout << "Error: Failed to create file " << output_file_name << endl;
return 0;
}
for (int i = 0; i < num_nations; i++) {
fout << nations[i].name << " " << nations[i].gold << " " << nations[i].silver << " " << nations[i].bronze << endl;
}
fout.close();
return 0;
}
```
在 `national.txt` 文件中,每行包含一个国家的信息,格式为 `国家名 金牌数 银牌数 铜牌数`,例如:
```
中国 38 32 18
美国 36 39 33
日本 27 14 17
...
```
程序首先读取文件,将每个国家的信息存储在一个结构体数组 `nations` 中。然后,使用 STL 中的 `sort` 函数按照金牌数对国家进行排序。最后,将排序后的结果写入新文件 `national_sort.txt` 中。
阅读全文