
c++语言,解一个一元二次方程组
建立一个一元二次方程a*x*x+b*x+c=0求解类CSolver,包含构造函数(参数为三个系数),复制构造函数,根个数计算函数,根计算函数。...
建立一个一元二次方程a*x*x+b*x+c=0求解类CSolver,包含构造函数(参数为三个系数),复制构造函数,根个数计算函数,根计算函数。
展开
展开全部
#include <iostream>
#include <cmath>
using namespace std;
struct CSolver
{
CSolver(double a, double b, double c) : a(a), b(b), c(c)
{
}
// 然而这个不写也会自动生成,不知道为什么题目有这个要求。
// 有可能就不应该写。
CSolver(const CSolver &r) : a(r.a), b(r.b), c(r.c)
{
}
int count() const
{
double t = b * b - 4 * a * c;
return t > 0 ? 2 : t == 0 ? 1 : 0;
}
pair<double, double> solutions() const
{
double t = sqrt(b * b - 4 * a * c);
return make_pair((-b + t) * 0.5 / a, (-b - t) * 0.5 / a);
}
private:
double a, b, c;
};
int main()
{
CSolver s(2, 3, 1);
pair<double, double> r = s.solutions();
cout << s.count() << " " << r.first << " " << r.second << endl;
CSolver s2 = CSolver(1, 2, 1);
r = s2.solutions();
cout << s2.count() << " " << r.first << " " << r.second << endl;
}
如果允许用C++11标准可以写得更好看一点。另外关于精度问题因为没有明确需求所以无视了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询