c++求方程式ax2+bx+c=0的根。
时间: 2024-09-29 17:04:44 浏览: 46
在C++中,可以使用二次公式来求解一元二次方程 `ax^2 + bx + c = 0` 的根。这个公式通常表示为:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
其中 `a`, `b`, 和 `c` 分别是方程的系数。以下是通过编写一个函数来实现这个计算的基本步骤:
```cpp
#include <cmath> // 引入数学库以使用 sqrt() 函数
double quadraticRoot(double a, double b, double c) {
// 检查判别式是否大于等于0,因为负判别式的方程无实数解
double discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
throw std::domain_error("The equation has no real roots.");
}
// 计算两个解
double root1 = (-b + std::sqrt(discriminant)) / (2 * a);
double root2 = (-b - std::sqrt(discriminant)) / (2 * a);
return std::make_tuple(root1, root2); // 返回一个包含两个解的tuple
}
// 使用示例
int main() {
try {
double a = 1, b = -3, c = 2;
auto roots = quadraticRoot(a, b, c);
std::cout << "Roots are: ";
for (const auto& root : roots) {
std::cout << root << " ";
}
std::cout << "\n";
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个代码片段中,`quadraticRoot()` 函数接受三个参数并返回一个包含两个根的tuple。如果判别式小于0,则抛出一个异常,说明方程无实数解。
阅读全文