多项式 class 的构造函数,尽管阶数未知,但必须初始化系数

constructor for a polynomial class that must initialize the coefficients although the degree is unknown

我有这个问题:

您将实现一个多项式 class,它使用动态数组来存储多项式的系数。 多项式 class 有两个私有成员变量:一个动态数组来存储 系数和多项式的次数如下:

(私人: 双*系数; // 指向动态数组的指针

智力学位; // 多项式次数)

1.Write 允许以下列方式初始化简单多项式的构造函数:

我。多项式 p1(3,1); // 1 次多项式 p1 = 3 x+1

二。多项式 p2(1,4,2); // 2 次多项式 p2 = x2+4x+2

三。多项式 p3(1,3,3,1); // 3 次多项式 p3 = x3+ 3x2 + 3x +1

就是这个问题。

这些构造函数被传递给系数,但系数的数量由用户选择,我如何制作这样的构造函数?? 而且我不能限制用户想要输入的多项式的次数(如果是这种情况,我可以将默认值为零,这样如果他不给出所有系数,其余系数将为零)

动态数组成员对解决这个问题有帮助吗?

我建议创建一个结构 Term:

struct Term
{
    int coefficient;
    int power;
};

根据定义,多项式是项的容器(或总和):

class Polynomial
{
  public:
    std::vector<Term>  terms;
    Polynomial(int coef1, int constant1);
}

在上面的class中,构造函数会创建两个项:

Polynomial::Polynomial(int coef1, int constant1)
{
    Term t1;
    Term c;
    t1.coefficient = coef1;
    t1.power = 1;
    c.coefficient = constant1;
    c.power = 0;
    terms.push_back(c);
    terms.push_back(t1);
}

下一个构造函数,根据您的要求,创建 3 个项:

Polynomial::Polynomial(int coef1, int coef2, int constant1)
{
    Term t1 = {coef1, 2};
    Term t2 = {coef2, 1};
    Term constant_term = {constant1, 0};
    terms.push_back(constant_term);
    terms.push_back(t2);
    terms.push_back(t1);
}

加法的一个定理是项可以按任何顺序排列。您可以更改将它们附加到容器的顺序,以便按常见顺序打印它们(首先是最高指数项)。

系数数组

在需求中,有double * coef应该是一个系数数组(每一项一个)。

这是构造函数的一个示例:

Polynomial::Polynomial(double coef1, double constant)
{
    degree = 1;
    coef = new double[2]; // 2 terms.
    coef[0] = coef1;
    coef[1] = constant;
}

其他构造器与上面类似

记住,你的析构函数应该包含 delete[] coef;.