用c++同学们去野外郊游,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的?输入第一行是人数n,之后有n行每行是一位朋友的描述,包括性别和身高。输出是一行表示合影的身高排列,由空格隔开。 输入输出格式 输入格式 输入文件photo.in 输入第一行是人数n,n<=100。之后有n行每行是一位朋友的描述,包括性别和身高。 输出格式 输出文件photo.out 输出是一行表示合影的身高排列,由空格隔开。说明:输入输出的身高都保留两位小数
时间: 2024-03-10 11:48:10 浏览: 25
很好,这是一个关于 C++ 的问题,需要解决输入输出和排序的问题。下面是一份参考代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
struct Person {
char gender;
double height;
};
bool cmp(const Person &p1, const Person &p2) {
if (p1.gender == 'M' && p2.gender == 'F') {
return true;
} else if (p1.gender == 'F' && p2.gender == 'M') {
return false;
} else if (p1.gender == 'M' && p2.gender == 'M') {
return p1.height < p2.height;
} else {
return p1.height > p2.height;
}
}
int main() {
int n;
cin >> n;
vector<Person> people(n);
for (int i = 0; i < n; i++) {
cin >> people[i].gender >> people[i].height;
}
sort(people.begin(), people.end(), cmp);
for (int i = 0; i < n; i++) {
cout << fixed << setprecision(2) << people[i].height << " ";
}
cout << endl;
return 0;
}
```
以上就是一份完整的 C++ 代码,可以用来解决这个问题。