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



我有这个问题:

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

(私人:double*系数;//指向动态阵列的指针

int度;//多项式次数(

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

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

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

iii。多项式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);
}

在上面的类中,构造函数将创建两个术语:

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;

相关内容

  • 没有找到相关文章

最新更新