3) 编写函数,根据三边长度求取三角形面积(三边长度默认为 3,4,5)。编写 main 函数对该函数进行测试,考虑不输入任何边长度、输入一条边长度、输入二条边长度和输入三条边长度几种情况下,分别输出函数计算后的面积,程序命名lab1_3cpp
时间: 2024-10-08 15:08:33 浏览: 65
在C++中,我们可以编写一个名为`triangle_area`的函数来计算给定三边长度的三角形面积。这里我们通常使用海伦公式(Heron's formula),当三边已知时,可以有效地计算出面积。然而,对于特殊情况,如只提供一条边或两条边的情况,我们需要检查它们是否满足构成三角形的条件(两边之和大于第三边),如果不符合则返回错误信息。
以下是一个简单的实现示例:
```cpp
#include <iostream>
#include <cmath>
// 计算三角形面积
double triangle_area(double a, double b, double c) {
// 校验是否能构成三角形
if (a + b > c && a + c > b && b + c > a) {
double s = (a + b + c) / 2; // 半周长
return std::sqrt(s * (s - a) * (s - b) * (s - c)); // 海伦公式
} else {
return -1; // 或者抛出异常,表示非法输入
}
}
// 主函数main
int main() {
// 测试不同的情况
double sides[] = {3, 4, 5}; // 正确的三角形边长
std::cout << "Triangle with sides 3, 4, 5 area: " << triangle_area(sides[0], sides[1], sides[2]) << std::endl;
// 不合法输入
sides[1] = 0; // 只有一条边
std::cout << "Invalid side length: Triangle area is undefined: " << triangle_area(sides[0], sides[1], sides[2]) << std::endl;
sides[1] = sides[2]; // 两相等边
std::cout << "Invalid side lengths: Cannot form a unique triangle: " << triangle_area(sides[0], sides[1], sides[2]) << std::endl;
sides[0] = sides[1] = sides[2] = 3; // 全相等边
std::cout << "All sides equal: Degenerate case (isosceles triangle), no area: " << triangle_area(sides[0], sides[1], sides[2]) << std::endl;
return 0;
}
```
在这个程序中,`lab1_3cpp`是你想要保存文件的名称。当你运行`main`函数时,它会分别对不同的情况输出计算结果或者给出错误提示。
阅读全文