用c++编写一个计算三角形面积的函数,函数的参数为三角形三边边长 a、b、c.可以用 Heron 公式计算,当输入的三边长有负值时,引发标准异常invalidargument;
时间: 2024-03-17 15:47:48 浏览: 153
下面是一个使用 C++ 编写的计算三角形面积的函数,同样使用 Heron 公式计算,同时对输入参数进行了检查,如果输入的边长小于等于 0,则抛出 "invalid argument" 异常。
```c++
#include <iostream>
#include <cmath>
#include <stdexcept>
using namespace std;
double triangle_area(double a, double b, double c) {
if (a <= 0 || b <= 0 || c <= 0) {
throw invalid_argument("invalid argument");
}
if (a + b <= c || a + c <= b || b + c <= a) {
throw invalid_argument("invalid argument");
}
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
// 测试函数
int main() {
try {
cout << triangle_area(3, 4, 5) << endl; // 输出 6
cout << triangle_area(4, 4, 4) << endl; // 输出 6.9282
cout << triangle_area(-1, 2, 3) << endl; // 抛出 invalid_argument 异常
} catch (const invalid_argument& e) {
cerr << "Error: " << e.what() << endl;
}
return 0;
}
```
在上面的代码中,我们使用了 C++ 的标准异常类 `invalid_argument`,当输入参数不符合要求时,我们抛出了该异常并传递了一个错误信息。在测试函数中,我们使用了 `try-catch` 语句捕获异常并输出错误信息。
值得注意的是,由于计算三角形面积时需要进行浮点数运算,因此在进行数值比较时应该避免直接使用等号,而是应该使用一个较小的误差范围判断两个数是否相等。
阅读全文