一元稀疏多项式计算器加减乘除运算Word下载.docx
- 文档编号:6188034
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:28
- 大小:19.42KB
一元稀疏多项式计算器加减乘除运算Word下载.docx
《一元稀疏多项式计算器加减乘除运算Word下载.docx》由会员分享,可在线阅读,更多相关《一元稀疏多项式计算器加减乘除运算Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
doubleValue(doublex);
//----------------------------------------返回多项式在x下的值
voidClear();
//--------------------------------------------------清空多项式
Polynomialshunxu();
//-----------------------指数递增变递减,递减变递增
Polynomialpaixu();
//------------------------用来对计算后结果的排序处理(主要去掉系数为0的项)
/*
函数方法
*/
voidInput();
//----------------------------------------------------------------多项式输入
voidOutPut();
//---------------------------------------------------------------多项式输出
PolynomialAdd(Polynomial&
b);
//-----------------------------------------------多项式相加
PolynomialSubtract(Polynomial&
//------------------------------------------多项式相减
PolynomialMultiply(Polynomial&
//------------------------------------------多项式相乘
PolynomialDivide(Polynomial&
//-------------------------------------------多项式相除
/*
操作符重载
friendistream&
operator>
>
(istream&
is,Polynomial&
obj);
//----------------输入符号重载
friendostream&
operator<
<
(ostream&
os,Polynomial&
//----------------输出符号重载
Polynomialoperator+(Polynomial&
//------------------------------------加号重载
Polynomialoperator-(Polynomial&
//------------------------------------减号重载
Polynomialoperator*(Polynomial&
//------------------------------------乘号重载
Polynomialoperator/(Polynomial&
//------------------------------------除号重载
intPolynomial:
:
Degree(){
list<
iteratoriter=termList.begin();
termtemp=(term)*iter;
intdegree=temp.exp;
returndegree;
}
doublePolynomial:
Value(doublex){
doublesum=0;
inti;
for(;
iter!
=termList.end();
iter++){
termtemp=(term)*iter;
intt=1;
for(i=temp.exp;
i!
=0;
i--){
t=t*x;
}
sum+=temp.coef*t;
}
returnsum;
voidPolynomial:
Clear(){
termList.clear();
PolynomialPolynomial:
shunxu(){
Polynomialp1;
termtemp;
termt_a=(term)*iter;
temp.coef=t_a.coef;
temp.exp=t_a.exp;
p1.termList.push_front(temp);
returnp1;
//用来对计算后结果的排序处理(在输入时已经对系数为0的情况处理过了,但得出的结果系数可能有等于0的,此方法就是对系数为0的情况处理)
paixu(){
Polynomialaaa;
iteratorit=termList.begin();
it!
){
termt11=*it;
if(t11.coef==0){
it++;
}else{
aaa.termList.push_back(t11);
}
returnaaa;
Input(){
intn;
cout<
"
请输入多项式的项数:
;
cin>
n;
按升幂输入多项式的系数和指数"
endl;
for(inti=1;
i<
=n;
i++){
termt_temp;
cout<
请输入第"
项系数和指数,中间以空格为界:
cin>
t_temp.coef;
t_temp.exp;
if(t_temp.coef!
=0){
termList.push_back(t_temp);
}
OutPut(){
if(termList.empty()){
0"
}else{
iteratorit=termList.begin();
if(t11.exp!
if(t11.coef==1){
if(t11.exp==1){
cout<
x"
if(++it!
=termList.end()){
termt112=*it;
if(t112.coef>
0){
cout<
+"
}else{
}
}
}else{
cout<
x^"
t11.exp;
if(++it!
}
}
}elseif(t11.coef==(-1)){
if(t11.exp==1){
-x"
if(++it!
}else{
cout<
-x^"
if(++it!
}
t11.coef<
termt112=*it;
if(t112.coef>
cout<
}else{
}else{
}
cout<
t11.coef;
if(++it!
termt112=*it;
if(t112.coef>
}else{
Add(Polynomial&
b){
Polynomialc;
iteratoriter_a=termList.begin();
iteratoriter_b=b.termList.begin();
while(iter_a!
=termList.end()&
&
iter_b!
=b.termList.end()){
termt_a=(term)*iter_a;
termt_b=(term)*iter_b;
if(t_a.exp<
t_b.exp){
c.termList.push_back(t_b);
iter_b++;
}elseif(t_a.exp>
c.termList.push_back(t_a);
iter_a++;
t_temp.coef=t_a.coef+t_b.coef;
t_temp.exp=t_a.exp;
c.termList.push_back(t_temp);
iter_a!
iter_a++){
c.termList.push_back(*iter_a);
=b.termList.end();
iter_b++){
c.termList.push_back(*iter_b);
Polynomialc1=c.paixu();
returnc1;
Subtract(Polynomial&
if(t_a.exp>
}elseif(t_a.exp<
temp.coef=-t_b.coef;
temp.exp=t_b.exp;
c.termList.push_back(temp);
temp.coef=t_a.coef-t_b.coef;
temp.exp=t_a.exp;
termtemp2;
termt_b=(term)*iter_b;
temp2.coef=-t_b.coef;
temp2.exp=t_b.exp;
c.termList.push_back(temp2);
Multiply(Polynomial&
Polynomialc;
Polynomialc1;
//这个c1的位置只能放在这里,局部变量
for(;
termtemp;
termt_a=(term)*iter_a;
temp.coef=t_a.coef*t_b.coef;
temp.exp=t_a.exp+t_b.exp;
c1.termList.push_back(temp);
c=c.Add(c1);
c1.Clear();
returnc;
}
Divide(Polynomial&
Polynomiala;
//被除数
a.termList.push_back(temp);
}
//---------------------------------------------------------
Polynomialquotient,remainder,temp1,temp2;
iteratorqa_a=a.termList.begin();
iteratorqb_b=b.termList.begin();
termqa=(term)*qa_a;
termqb=(term)*qb_b;
temp1=a;
//cout<
要到达while循环了"
while(qa.exp>
=qb.exp){
termtemp2_term;
temp2_term.coef=qa.coef/qb.coef;
temp2_term.exp=qa.exp-qb.exp;
quotient.termList.push_back(temp2_term);
Polynomialcenter_quotient;
center_quotient.termList.push_back(temp2_term);
Polynomialtt=b*center_quotient;
a=a-tt;
a=a.paixu();
iteratorqa_1=a.termList.begin();
qa=(term)*qa_1;
Polynomialji=quotient*b;
//Polynomial
remainder=temp1-ji;
returnremainder;
istream&
operator>
obj){
请输入多项式的项数:
obj.termList.push_back(t_temp);
returnis;
ostream&
if(obj.termList.empty()){
iteratorit=obj.termList.begin();
=obj.termList.end();
=obj.termList.end()){
}
termt112=*it;
if(t112.coef>
cout<
}else{
}
if(t11.exp==1){
termt112=*it;
if(t112.coef>
}else{
t11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 稀疏 多项式 计算器 加减乘除 运算