编写一个程序求方程ax^2 bx c=0的根,用三个函数分别求出当b^2- 4ac大于0 ,小于0和等于0时的根。要求从主函数输入a,b,c的值并输出结果。
可能会有几种情况,有两个、1个或者没有
#include<iostream>
using namespace std;
void Cal1(double a, double b, double c)
{
cout << "该方程只有一个解"<<endl;
cout <<"x=" << -a * 2 / b;
}
void Cal2(double a, double b, double c)
{
cout << "该方程有两个不同的实根" << endl;
double x1,x2;
double m = b * b - 4 * a * c;
x1 = (-b + sqrt(m)) / (2 * a);
x2 = (-b - sqrt(m)) / (2 * a);
cout << "x1=" << x1 << " x2=" << x2 ;
}
void Cal0(double a, double b, double c)
{
cout << "该方程有两个不同的复数根" << endl;
if (b != 0)
{
double m1 = -b / (2 * a);
double m2 = sqrt(-m) / (2 * a);
double n1 = -b / (2 * a);
double n2 = - sqrt(-m) / (2 * a);
cout << "x1=" << m1 << (m2 > 0 ? "+" : "-") << fabs(m2) << "i" << " x2=" << n1 << (n2 > 0 ? "+" : "-") << fabs(n2) << "i";
}
else
{
double m3 = sqrt(-m) / (2 * a);
double n3 = -sqrt(-m) / (2 * a);
cout << "x1=" << m3 << "i x2=" << n3 << "i";
}
}
int main()
{
double a, b, c;
cout << "本程序用于求解一元二次方程(a*x_2+b*x+c=0的根." << endl << "请输入对应的系数:";
cin >> a >> b >> c;
double m = b * b - 4 * a * c;
if(m==0)
Cal1(a, b, c);
else if(m>0)
Cal2(a,b,c);
else
Cal0(a,b,c);
system("pause");
return 0;
}