多项式 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;
.
我有这个问题:
您将实现一个多项式 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;
.