//为二元方程式ax**2+bx+c=0设计一个名为QuadraticEquation的类,这个类包括
//1、代表三个系数的私有域数据a、b、c
//2、一个参数为a、b、c的构造方法
//3、a、b、c的三个get方法
//4、一个名为getDiscriminant()的方法返回判别式结果:b**2-4ac
//5、一个名为getRoot1()和getRoot2()的方法返回等式的两个根
//这两个方法在判别式为非负数的时候返回计算结果,如果判别式为负数,这两个方法返回0.
//实现该类,编写一个测试程序,任给a、b、c的值创建一个QuadraticEquation对象,
//显示判别式结果。如果判别式为正数,输出该方程的两个根;如果判别式为0,输出一个根;
//如果判别式为负数,输出“该方程无根”。
#include"iostream"
#include"cmath"
using namespace std;
class QuadraticEquation
{
private:
double a;
double b;
double c;
public:
QuadraticEquation(double tempa, double tempb, double tempc)
{
a = tempa;
b = tempb;
c = tempc;
}
double geta()
{
return a;
}
double getb()
{
return b;
}
double getc()
{
return c;
}
double getDiscriminant()
{
return getb()*getb()-4*geta()*getc();
}
double getRoot1()
{
if(getDiscriminant()>=0)
{
return (-getb()+sqrt(getDiscriminant()))/(2*geta());
}
else
{
return 0;
}
}
double getRoot2()
{
if(getDiscriminant()>=0)
{
return (-getb()-sqrt(getDiscriminant()))/(2*geta());
}
else
{
return 0;
}
}
};
int main()
{
QuadraticEquation q(1,-8,15);
cout<<"方程系数a为:"<<q.geta()<<endl;
cout<<"方程系数b为:"<<q.getb()<<endl;
cout<<"方程系数c为:"<<q.getc()<<endl;
cout<<"判别式结果为:"<<q.getDiscriminant()<<endl;
if(q.getDiscriminant()>0)
{
cout<<"方程的根为:x1="<<q.getRoot1()<<",x2="<<q.getRoot2()<<endl;
}
else if(q.getDiscriminant()==0)
{
cout<<"方程的根为:x1=x2="<<q.getRoot1()<<endl;
}
else
{
cout<<"该方程无根"<<endl;
}
return 0;
}