用户定义 10 个三角形,放入一个数组中。找出其中既是等腰三角形又是直角三角形的三 角形,放入新的数组中,求出他们的各自面积和周长。用动态数组来实现此功能。使用c++
时间: 2024-11-04 18:18:07 浏览: 32
在C++中,我们可以使用二维数组来代表三角形的顶点坐标,然后检查每个三角形是否满足等腰和直角三角形的条件。这里我们首先假设三角形由三个整数表示,分别是两条边的长度和它们之间的角度(如果是90度,则表示直角)。动态数组(vector)会更方便添加和删除元素。
以下是简单的步骤和代码实现:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
// 检查是否为等腰三角形
bool isIsosceles(std::vector<int>& triangle) {
return std::abs(triangle[1] - triangle[2]) == 0;
}
// 检查是否为直角三角形
bool isRightTriangle(std::vector<int>& triangle) {
return (std::pow(triangle[0], 2) + std::pow(triangle[1], 2) == std::pow(triangle[2], 2));
}
// 计算三角形面积
double calculateArea(std::vector<int>& triangle) {
double a = static_cast<double>(triangle[0]);
double b = static_cast<double>(triangle[1]);
double h = std::sqrt(std::pow(b, 2) - (a / 2) * (a / 2)); // 根据勾股定理计算高
return 0.5 * a * h; // 三角形面积公式
}
int main() {
int numTriangles = 10;
std::vector<std::vector<int>> triangles(numTriangles, {0, 0, 0}); // 创建动态数组存放三角形
// 假设你已经有了10个三角形的输入数据,填入triangles数组
// ...
std::vector<std::pair<double, double>> result; // 存放面积和周长的元组
for (const auto& triangle : triangles) {
if (isIsosceles(triangle) && isRightTriangle(triangle)) {
double area = calculateArea(triangle);
double perimeter = triangle[0] + triangle[1] + triangle[2];
result.push_back({area, perimeter});
}
}
// 输出结果
for (const auto& pair : result) {
std::cout << "面积: " << pair.first << ", 周长: " << pair.second << std::endl;
}
return 0;
}
```
在这个例子中,我们遍历输入的三角形数组,对每个三角形执行条件检查,并将符合条件的三角形及其面积和周长添加到结果列表中。注意,你需要提供具体的三角形数据才能继续运行这个程序。
阅读全文