求方程ax 2 +bx+c=O的根,用3个函数分别求当:b2-4ac大于0、等于0和小于0时的根并 输出结果。从主函数输入a、b、c 的值。
时间: 2023-10-06 21:08:28 浏览: 148
可以使用以下三个函数分别求解二次方程的根:
1. 当 $b^2 - 4ac > 0$ 时,二次方程有两个不相等的实根:
```C++
void quadratic_equation1(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x = " << x << endl;
}
else {
cout << "This quadratic equation has no real roots." << endl;
}
}
```
2. 当 $b^2 - 4ac = 0$ 时,二次方程有两个相等的实根:
```C++
void quadratic_equation2(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x1 = x2 = " << x << endl;
}
else {
cout << "This quadratic equation has no real roots." << endl;
}
}
```
3. 当 $b^2 - 4ac < 0$ 时,二次方程没有实根,而是有两个共轭复数解:
```C++
void quadratic_equation3(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x1 = x2 = " << x << endl;
}
else {
double real = -b / (2 * a);
double imaginary = sqrt(-delta) / (2 * a);
cout << "x1 = " << real << " + " << imaginary << "i, ";
cout << "x2 = " << real << " - " << imaginary << "i" << endl;
}
}
```
将以上三个函数整合到主函数中,可以实现输入 $a$、$b$、$c$ 的值,并根据 $b^2 - 4ac$ 的值调用相应的函数求解二次方程的根:
```C++
#include <iostream>
#include <cmath>
using namespace std;
void quadratic_equation1(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x = " << x << endl;
}
else {
cout << "This quadratic equation has no real roots." << endl;
}
}
void quadratic_equation2(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x1 = x2 = " << x << endl;
}
else {
cout << "This quadratic equation has no real roots." << endl;
}
}
void quadratic_equation3(double a, double b, double c) {
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (delta == 0) {
double x = -b / (2 * a);
cout << "x1 = x2 = " << x << endl;
}
else {
double real = -b / (2 * a);
double imaginary = sqrt(-delta) / (2 * a);
cout << "x1 = " << real << " + " << imaginary << "i, ";
cout << "x2 = " << real << " - " << imaginary << "i" << endl;
}
}
int main() {
double a, b, c;
cout << "Enter the coefficients of the quadratic equation: ";
cin >> a >> b >> c;
double delta = b * b - 4 * a * c;
if (delta > 0) {
quadratic_equation1(a, b, c);
}
else if (delta == 0) {
quadratic_equation2(a, b, c);
}
else {
quadratic_equation3(a, b, c);
}
return 0;
}
```
阅读全文
相关推荐















