cpp:表示一元二次方程的结果并以书面形式输出
时间: 2024-10-21 16:12:11 浏览: 0
在C++中,解决一元二次方程(ax^2 + bx + c = 0)通常涉及计算其根,这可以通过公式(-b ± sqrt(b^2 - 4ac)) / (2a)得到。由于这个结果可能包括实数解、复数解或者没有解(判别式小于零),我们可以创建一个结构或类来封装这些信息,并提供适当的成员函数用于输出。
以下是一个简单的示例,使用`complex`库来处理复数解:
```cpp
#include <iostream>
#include <cmath>
#include <complex>
// 定义一元二次方程的解决方案类
class QuadraticSolution {
private:
std::complex<double> realRoot;
std::complex<double> complexRoot;
public:
QuadraticSolution(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) { // 实数解
realRoot = (-b + std::sqrt(discriminant)) / (2 * a);
complexRoot = {};
} else if (discriminant == 0) { // 双重实数解
realRoot = -b / (2 * a);
complexRoot = {};
} else { // 复数解
double imaginaryPart = std::sqrt(-discriminant) / (2 * a);
realRoot = complex(-b / (2 * a), 0);
complexRoot = complex(realRoot.real(), imaginaryPart);
}
}
void printSolution() {
if (complexRoot.imag() == 0) {
std::cout << "实数解:";
if (realRoot.imag() != 0)
std::cout << "复数(" << realRoot.real() << ", " << realRoot.imag() << ")";
else
std::cout << realRoot.real();
} else {
std::cout << "复数解:(" << realRoot.real() << ", " << complexRoot.imag() << ")";
}
}
};
int main() {
double a, b, c;
std::cin >> a >> b >> c;
QuadraticSolution sol(a, b, c);
sol.printSolution();
return 0;
}
```
阅读全文