首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多项式编程解决方法

2012-02-26 
多项式编程开发多项式Polynomial,多项式的每一项用数组表示,每项包含一个系数一个指数。例如:2X4的指数为4,

多项式编程
开发多项式Polynomial,多项式的每一项用数组表示,每项包含一个系数一个指数。例如:2X4的指数为4,系数为2。请开发一个完整的Polynomial类,包含构造函数,析构函数以及“”函数和“”函数。该类还要提供以下重载的运算符:
a)重载加法运算符+,将两个多项式相加。
b)重载减法运算符-,将两个多项式相减。
c)重载赋值运算符=,将一个多项式赋给另一个多项式。
d)重载乘法运算符*,将两个多项式相乘。
e)重载加法赋值运算符+=,减法赋值运算符-=以及乘法赋值运算符。
请各位提供一点算法。
多项式的每一项用数组表示,请问怎么表示?

[解决办法]
多项式的每一项可以用一个map容器来实现(map <int,int> ),运算的时候通过map的key值来查找,用以确定同类项,确定之后可以用alue值进行加减乘除等操作
[解决办法]
你看看吧一本数据结构书上的例子,功能不是很完善
template <class Number>
class POLY
{
private:
int n; Number *a;
public:
//系数是c 指数是N
POLY <Number> (Number c, int N){
a = new Number[N+1]; n = N+1; a[N] = c;
for (int i = 0; i < N; i++) a[i] = 0;
}
~POLY <Number> (){
delete []a;
}
//对多项式求值
float eval(float x) const{
double t = 0.0;
for (int i = n-1; i > = 0; i--)
t = t*x + a[i];
return t;
}
friend POLY <Number> operator+(POLY <Number> &p, POLY <Number> &q){
POLY <Number> t(0, p.n> q.n ? p.n-1 : q.n-1);
for (int i = 0; i < p.n; i++)
t.a[i] += p.a[i];
for (int j = 0; j < q.n; j++)
t.a[j] += q.a[j];
return t;
}
friend POLY <Number> operator*(POLY <Number> &p, POLY <Number> &q){
POLY <Number> t(0, (p.n-1)+(q.n-1));
for (int i = 0; i < p.n; i++)
for (int j = 0; j < q.n; j++)
t.a[i+j] += p.a[i]*q.a[j];
return t;
}
};

热点排行