定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。
时间: 2023-06-13 15:08:14 浏览: 103
下面是一份实现你要求的示例代码:
```c++
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct Teacher {
int id; // 职工号
string name; // 姓名
double salary; // 工资
};
void input(Teacher teachers[], int n) {
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个教师的信息:" << endl;
cout << "职工号:";
cin >> teachers[i].id;
cout << "姓名:";
cin >> teachers[i].name;
cout << "工资:";
cin >> teachers[i].salary;
cout << endl;
}
}
void output(Teacher teachers[], int n) {
cout << "所有教师的信息如下:" << endl;
for (int i = 0; i < n; i++) {
cout << "职工号:" << teachers[i].id << " ";
cout << "姓名:" << teachers[i].name << " ";
cout << "工资:" << teachers[i].salary << endl;
}
}
bool cmp(Teacher a, Teacher b) {
return a.salary < b.salary;
}
void sort(Teacher teachers[], int n) {
std::sort(teachers, teachers+n, cmp);
}
int main() {
const int N = 5;
Teacher teachers[N];
input(teachers, N);
sort(teachers, N);
output(teachers, N);
return 0;
}
```
在这个示例代码中,我们首先定义了一个结构体 `Teacher`,它包含了职工号、姓名和工资三个信息。然后,我们定义了三个函数:
- `void input(Teacher teachers[], int n)`:用于从键盘输入所有教师的信息。该函数接受一个 `Teacher` 类型的数组和一个整数 `n`,表示数组的大小。
- `void output(Teacher teachers[], int n)`:用于输出所有教师的信息。该函数接受一个 `Teacher` 类型的数组和一个整数 `n`,表示数组的大小。
- `bool cmp(Teacher a, Teacher b)`:用于比较两个 `Teacher` 类型的对象的工资大小。该函数接受两个 `Teacher` 类型的对象,返回一个布尔类型的值。
在 `main` 函数中,我们首先定义了一个大小为 5 的 `Teacher` 类型的数组 `teachers`,然后分别调用 `input`、`sort` 和 `output` 函数,实现了教师信息的录入、排序和输出。其中,我们使用了 `std::sort` 函数实现了按教师工资排序的功能,它接受三个参数:排序的起始地址、排序的结束地址和一个比较函数。在本例中,我们使用了自定义的 `cmp` 函数作为比较函数。