从键盘读入 n (3<=n<=100)个梯形的上底、下底和高,请问这 n 个梯形中,最大面积的梯形的面积是多少?(梯形面积的求解公式为 S = (a + b) * h / 2 ,也就是 ( 上底 + 下底 ) * 高 / 2 ) 输入描述 第1行为1个整数n,接下来n行每行3个整数分别代表梯形的上底、下底和高。 输出描述 最大面积梯形的面积(结果保留1位小数) C++结构体
时间: 2024-02-13 21:05:41 浏览: 109
好的,以下是使用 C++ 结构体的解题思路:
1. 定义一个结构体,包含三个字段:上底、下底和高。
2. 先读入 n (梯形的个数)。
3. 使用一个循环,读入每一个梯形的上底、下底和高,并计算它的面积。
4. 如果这个梯形的面积大于目前最大的面积,则更新最大面积。
5. 循环结束后,输出最大面积即可。
代码如下:
```c++
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct trapezium {
double top, bottom, height;
};
bool cmp(trapezium a, trapezium b) {
return (a.top + a.bottom) * a.height > (b.top + b.bottom) * b.height;
}
int main() {
int n;
cin >> n;
trapezium trap[n];
for(int i = 0; i < n; i++) {
cin >> trap[i].top >> trap[i].bottom >> trap[i].height;
}
sort(trap, trap+n, cmp);
printf("%.1lf", (trap[0].top + trap[0].bottom) * trap[0].height / 2);
return 0;
}
```
注意,这里使用了一个自定义的比较函数 cmp,它的作用是按照梯形的面积从大到小排序,以便后面直接取第一个梯形即为最大面积梯形。
阅读全文