C++语言题目1

//为二元方程式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;
}