c++ 解一元二次方程代码
时间: 2023-04-01 07:02:37 浏览: 71
请看下面的代码:
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, delta, x1, x2;
printf("请输入一元二次方程的系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b * b - 4 * a * c;
if (delta < )
{
printf("方程无实数根!\n");
}
else if (delta == )
{
x1 = x2 = -b / (2 * a);
printf("方程有两个相等的实数根:x1 = x2 = %.2f\n", x1);
}
else
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不相等的实数根:x1 = %.2f,x2 = %.2f\n", x1, x2);
}
return ;
}
相关问题
c++结构体解一元二次方程
以下是一个简单的 C++ 程序,可以用结构体来解一元二次方程:
```c++
#include <iostream>
#include <cmath>
using namespace std;
struct QuadraticEquation {
double a, b, c;
};
int main() {
QuadraticEquation eq;
cout << "Enter the coefficients of the quadratic equation (ax^2 + bx + c = 0):" << endl;
cout << "a = "; cin >> eq.a;
cout << "b = "; cin >> eq.b;
cout << "c = "; cin >> eq.c;
double delta = eq.b * eq.b - 4 * eq.a * eq.c;
if (delta > 0) {
double x1 = (-eq.b + sqrt(delta)) / (2 * eq.a);
double x2 = (-eq.b - sqrt(delta)) / (2 * eq.a);
cout << "The equation has two real roots: x1 = " << x1 << ", x2 = " << x2 << endl;
} else if (delta == 0) {
double x = -eq.b / (2 * eq.a);
cout << "The equation has one real root: x = " << x << endl;
} else {
double realPart = -eq.b / (2 * eq.a);
double imagPart = sqrt(-delta) / (2 * eq.a);
cout << "The equation has two complex roots: x1 = " << realPart << " + " << imagPart << "i, x2 = " << realPart << " - " << imagPart << "i" << endl;
}
return 0;
}
```
该程序使用 QuadraticEquation 结构体存储方程的系数,然后计算方程的根(如果有)。如果 delta 大于 0,则方程有两个实数根;如果 delta 等于 0,则方程有一个实数根;否则,方程有两个复数根。
c++解一元三次方程函数
以下是一个简单的 C++ 函数可以用来解一元三次方程:
```c++
#include <iostream>
#include <cmath>
using namespace std;
void solve_cubic(double a, double b, double c, double d) {
double delta, p, q, u, v, w;
delta = b*b - 3*a*c;
p = (-b + sqrt(delta)) / (3*a);
q = (-b - sqrt(delta)) / (3*a);
u = -p - q;
v = sqrt(3.0) * (p - q) / 2;
w = -u - v;
cout << "The three roots of the equation are: " << endl;
cout << u + d << endl;
cout << w + d << endl;
cout << v + d << endl;
}
```
这个函数采用了 Cardano's formula 来求解一元三次方程,它的参数是方程的四个系数 a, b, c 和 d,其中 d 是常数项。函数通过计算来确定方程的三个根,并将它们输出到标准输出流中。请注意,此函数假定方程具有三个实根。如果方程有复根,则需要使用更复杂的算法来解决。