一元多项式c++版Word下载.docx
- 文档编号:21185760
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:19
- 大小:17.64KB
一元多项式c++版Word下载.docx
《一元多项式c++版Word下载.docx》由会员分享,可在线阅读,更多相关《一元多项式c++版Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
B,Polynomial&
R);
//相加
//voidMinus(Polynomial&
//相减
voidOppo();
//系数相反数,用于相减
voidEvalute(doublex);
//赋值
//voidDerivate(Polynomial&
//求导
//voidMultiply(Polynomial&
//相乘
voiddestroyLink();
//销毁多项式
voidmenuPrint();
//菜单
voidcreateLink(intn);
//创建多项式
voidOver();
//退出
intn;
doubleresult;
private:
Node*front;
#endif;
创建源程序文件:
#include<
iostream>
usingnamespacestd;
#include"
LinkList.h"
//计算x^n,用于赋值
template<
classT>
TPolynomial<
T>
:
Power(Tn,Tx)
doubleresult=1;
for(inti=1;
i<
=n;
i++)
result=result*x;
returnresult;
}
//显示
voidPolynomial<
Print()
Row();
if((front==NULL)||(front->
next==NULL))
cout<
<
"
一元多项式为空"
endl;
else
Node*p=front->
next;
if(p->
data.exp!
=0)
cout<
Poly="
p->
data.coef<
x^"
data.exp;
elseif(p->
data.exp==0)
data.coef;
next!
=NULL)
{
p=p->
while
(1)
{
if((p->
0)&
&
(p->
=0))
cout<
elseif((p->
data.coef>
=0))
+"
data.exp==0))
if(p->
p=p->
else
break;
}
}
cout<
//销毁多项式值为0的项
Delete(Node*p)
Node*q=front;
while(q->
=p)
q=q->
p=q;
q=q->
deleteq;
//获取多项式长度
intPolynomial<
Getlength()
{
Node*p=front;
if(p==NULL)
return0;
while(p->
n++;
p=p->
returnn;
Setn()
n=Getlength();
Getfront()
Node*front=newNode;
//将多项式降序排序与合并同类项
Row()
Node*p=front->
Node*q=front->
Node*t=front->
while
(1)//冒泡排序
p=t;
q=p->
while(q)
if(p->
data.exp>
q->
data.exp)
{
if(q->
next)
q=q->
elseif(p->
data.exp==q->
data.exp)//合并同类项
p->
data.coef=p->
data.coef+q->
Node*temp=front;
while(temp->
=q)
temp=temp->
{
q=temp;
q->
next=temp->
deletetemp;
}
else
Node*temp=newNode;
temp->
data=q->
data;
q->
data=p->
data=temp->
deletetemp;
if(t->
t=t->
else
break;
Setn();
//系数相反数,用于相减
Oppo()
while
(1)
data.coef=0-p->
/*相减
Minus(Polynomial&
R)
B.Oppo();
Plus(B,R);
}*/
/*求导
Derivate(Polynomial&
R)
Node*r=R.front;
{
r->
next=newNode;
r=r->
data.exp=p->
r=R.front->
if(r->
Delete(p);
r->
data.coef=r->
data.coef*r->
data.exp=r->
data.exp-1;
r=r->
//相乘
Multiply(Polynomial&
Node*a=front->
Node*b=B.front->
Node*r=R.front;
if(R.front->
R.destroyLink();
B.Row();
while
(1)
Node*rr=newNode;
rr->
data.exp=a->
data.exp+b->
data.coef=a->
data.coef*b->
next=rr;
r=rr;
if(b->
b=b->
break;
if(a->
a=a->
b=B.front->
R.Row();
*/
//赋值运算
Evalute(doublex)
doubletemp=0;
temp+=(p->
data.coef)*Power(p->
data.exp,x);
temp<
//相加
Plus(Polynomial&
data=a->
data=b->
if(b->
b=b->
R.Row();
//销毁多项式
destroyLink()
if(!
a)throw"
一元多项式已为空!
;
//抛出异常
Node*b=a;
deleteb;
deletea;
front->
//菜单
menuPrint()
\t***********一元多项式的简单运算*************"
\t\t1创建要运算的两个一元多项式"
\t\t2将两个一元多项式相加"
//cout<
\t\t3将两个一元多项式相减"
\t\t4将两个一元多项式相乘"
\t\t3将两个一元多项式求导"
\t\t6显示两个一元多项式"
\t\t7给两个一元多项式赋值"
\t\t8销毁所创建的二个多项式"
\t\t9退出"
请输入你要进行的操作(1-9)"
//创建多项式
createLink(intn)
if(front->
destroyLink();
Node*a=front;
a->
a=a->
请输入第"
项的系数和指数:
系数:
cin>
>
(a->
data).coef;
指数:
data).exp;
data.exp<
0)
您输入有误,指数不允许为负值!
Delete(a);
i--;
continue;
data.coef==0)
系数为零,重新输入!
//退出
Over()
exit(0);
创建主函数:
LinkList.cpp"
//主函数
voidmain()
Node*p=newNode;
Node*q=newNode;
Node*r=newNode;
Polynomial<
double>
A(p);
//操作多项式A
B(q);
//操作多项式B
R(r);
//操作多项式R(存储结果)
intm=0;
intn=0;
intchoose;
{
A.menuPrint();
choose;
switch(choose)
case1:
请输入你要运算的第一个一元多项式的项数:
cin>
m;
A.createLink(m);
请输入你要运算的第二个一元多项式的项数:
n;
B.createLink(n);
case2:
if(!
m||!
n)
cout<
您的多项式创建有误,请重新选择……"
//异常(以下省略)
A.Plus(B,R);
相加的两个一元多项式为:
A.Print();
B.Print();
相加后的结果为:
R.Print();
R.destroyLink();
/*case3:
A.Minus(B,R);
相减的两个一元多项式为:
相减后的结果为:
case4:
n||!
m)
A.Multiply(B,R);
相乘的两个一元多项式为:
相乘后的结果为:
case5:
求导的一元多项式为:
求导后的结果为:
A.Derivate(R);
B.Derivate(R);
case6:
//输出多项式
第一个一元多项式为:
第二个一元多项式为:
case7:
//多项式赋值
您的X值为:
doublex;
x;
第一个一元多项式值为:
A.Evalute(x);
第二个一元多项式值为:
B.Evalute(x);
case8:
try//捕捉异常
A.destroyLink();
B.destroyLink();
catch(constchar*s)
{
s<
请重新选择^^^"
continue;
销毁成功!
case9:
A.Over();
//退出函数
default:
您的输入有误,请重新选择操作……"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 多项式 c+