n = int(input("请输入病患数量:")) patients = [] for i in range(n): name = input("请输入病患姓名:") age = int(input("请输入病患年龄:")) patients.append({"name": name, "age": age}) min_age, max_age = find_min_max_age(patients) print("年龄最小的患者是 %d 岁,年龄最大的患者是 %d 岁。" % (min_age, max_age)),改为C++
时间: 2024-02-24 08:53:41 浏览: 116
好的,下面是将 Python 代码转换为 C++ 的实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Patient {
string name;
int age;
};
pair<int, int> findMinMaxAge(const vector<Patient>& patients) {
if (patients.empty()) {
return {-1, -1};
}
if (patients.size() == 1) {
return {patients[0].age, patients[0].age};
}
int mid = patients.size() / 2;
auto left = findMinMaxAge(vector<Patient>(patients.begin(), patients.begin() + mid));
auto right = findMinMaxAge(vector<Patient>(patients.begin() + mid, patients.end()));
return {min(left.first, right.first), max(left.second, right.second)};
}
int main() {
int n;
cout << "请输入病患数量:";
cin >> n;
vector<Patient> patients(n);
for (int i = 0; i < n; i++) {
cout << "请输入病患姓名:";
cin >> patients[i].name;
cout << "请输入病患年龄:";
cin >> patients[i].age;
}
auto [minAge, maxAge] = findMinMaxAge(patients);
cout << "年龄最小的患者是 " << minAge << " 岁,年龄最大的患者是 " << maxAge << " 岁。" << endl;
return 0;
}
```
在上面的代码中,我们使用了 `vector` 来存储病患信息,使用了 `pair` 来返回最小和最大年龄。由于 C++ 中没有类似 Python 的自动解包特性,我们使用了 `auto [minAge, maxAge]` 来解包返回值。
您可以将上面的代码复制到 C++ 编译器中运行,按照提示逐个输入每个病患的姓名和年龄,程序会自动计算出病患序列中的年龄最小和最大的患者,并将结果输出。
希望这个回答能够帮助您!
阅读全文