c++语言,解一个一元二次方程组

建立一个一元二次方程a*x*x+b*x+c=0求解类CSolver,包含构造函数(参数为三个系数),复制构造函数,根个数计算函数,根计算函数。... 建立一个一元二次方程a*x*x+b*x+c=0求解类CSolver,包含构造函数(参数为三个系数),复制构造函数,根个数计算函数,根计算函数。 展开
 我来答
BlueWanderer
2016-12-19 · TA获得超过9211个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2305万
展开全部
#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标准可以写得更好看一点。另外关于精度问题因为没有明确需求所以无视了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式