编写程序实现多项式求和.docx
- 文档编号:8700716
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:11
- 大小:16.28KB
编写程序实现多项式求和.docx
《编写程序实现多项式求和.docx》由会员分享,可在线阅读,更多相关《编写程序实现多项式求和.docx(11页珍藏版)》请在冰豆网上搜索。
编写程序实现多项式求和
方法一:
#include
#include
#include
#defineN30
structPoly
{
floatcoef; //系数
intexp; //指数
}node[30];
voidprint(Polynode[],intn)//顺序输出函数
{
inti;
cout<<"多项式为:
";
if(n==0||node[1].coef==0)
cout<<"0";
for(i=1;i<=n;i++)
{
if(i!
=1&&node[i].coef>0)
cout<<"+";
cout< } cout< } intsort(Polynode[],intn)//排序函数,合并同指数项去除0系数项 { inti,j,k,t; Polynodet[1]; for(i=1;i<=n-1;i++)//排序 for(j=i+1;j<=n;j++) { if((node[i].exp)>(node[j].exp)) { nodet[0]=node[i]; node[i]=node[j]; node[j]=nodet[0]; } } for(i=1;i<=n;i++)//合并同类项 { for(j=i+1;j<=n;j++) { if(node[i].exp==node[j].exp) { node[i].coef=node[i].coef+node[j].coef; for(k=j;k<=n-1;k++) node[k]=node[k+1]; n--; j--; if(node[i].coef==0) { for(t=i;t<=n-1;t++) node[t]=node[t+1]; n--; } } } } returnk=n; } voidcreat(Polynode[],intn)//创建函数 { inti; cout<<"请依次输入每一项的系数指数: "; for(i=1;i<=n;i++) cin>>node[i].coef>>node[i].exp; } void addpoly(Polynode1[],Polynode2[],intn1,intn2)//相加函数 { inti; for(i=n1+1;i<=n1+n2;i++) node1[i]=node2[i-n1]; } voidmain()//主函数 { intn,p,a,b; Polynode1[N],node2[N]; cout<<"请输入第一个多项式: "; cout<<"请输入多项式的项数(小于30): "; cin>>n; creat(node1,n); a=p=sort(node1,n); print(node1,p); cout<<"请输入第二个多项式: "; cout<<"请输入多项式的项数(小于30): "; cin>>n; creat(node2,n); b=p=sort(node2,n); print(node2,p); cout<<"相加后: "; addpoly(node1,node2,a,b); p=sort(node1,a+b); print(node1,p); } 运行界面: 方法二: #include usingnamespacestd; #defineN30 intmain() { inta[N]={0},b[N]={0},c[N]={0},n,i; cout<<"请输入第一个多项式的最大指数: "; cin>>n; cout<<"请输入第一个多项式的系数: "< for(i=0;i<=n;i++) cin>>a[i]; cout<<"请输入第二个多项式的最大指数: "; cin>>n; cout<<"请输入第二个多项式的系数: "< for(i=0;i<=n;i++) cin>>b[i]; cout<<"多项式之和为: "; for(i=0;i<=N;i++) c[i]=a[i]+b[i]; for(i=0;i { if(c[i]! =0) { if(i==0) cout< else { if(c[i]>0) cout<<"+"< else cout< } } } } 运行界面: 方法三: #include usingnamespacestd; #defineMax20 typedefstruct { floatcoef; //系数 intexp; //指数 }poly[Max]; structPolyNode { floatcoef; //系数 intexp; //指数 PolyNode*next; }; classPoly { private: PolyNode*head; public: Poly(); ~Poly(); voidcreate(polya,intn); voidoutput(); voidsort(); //多项式结点非降序排序 voidadd(PolyL); }; Poly: : Poly() { head=newPolyNode; head->next=NULL; } Poly: : ~Poly() { PolyNode*p; while(head) { p=head; head=head->next; deletep; } head=NULL; } voidPoly: : create(polya,intn) { PolyNode*s,*r; inti; r=head; for(i=0;i { s=newPolyNode; s->coef=a[i].coef; s->exp=a[i].exp; s->next=NULL; r->next=s; r=s; } } voidPoly: : sort() { PolyNode*p,*q,*r; p=head->next; if(p) { r=p->next; p->next=NULL; p=r; while(p) { r=p->next; q=head; while(q->next&&q->next->exp q=q->next; p->next=q->next; q->next=p; p=r; } } } voidPoly: : output() { PolyNode*p; p=head->next; while(p) { cout< p=p->next; } cout< } voidPoly: : add(PolyL) { floatsum; PolyNode*pa,*pb,*qa,*qb; pa=head; qa=pa->next; pb=L.head; qa=pa->next; pb=L.head; qb=pb->next; while(qa&&qb) { if(qa->exp { pa=qa; qa=qa->next; } elseif(qa->exp>qb->exp) { pb->next=qb->next; qb->next=qa; pa->next=qb; pa=qb; qb=pb->next; } else { sum=qa->coef+qb->coef; if(sum==0) { pa->next=qa->next; deleteqa; qa=pa->next; pb->next=qb->next; deleteqb; qb=pb->next; } else { qa->coef=sum; pa=qa; qa=qa->next; pb->next=qb->next; deleteqb; qb=pb->next; } } } if(qb) pa->next=qb; } voidmain() { PolyA,B; polya={{1,2},{2,0},{3,1},{4,5},{6,8}}; polyb={{12,2},{-3,5},{22,7},{-5,1}}; A.create(a,5); B.create(b,4); cout<<"原多项式A为: "; A.output(); cout<<"原多项式B为: "; B.output(); A.sort(); B.sort(); cout<<"有序多项式A为: "; A.output(); cout<<"有序多项式B为: "; B.output(); A.add(B); cout<<"和多项式为: "; A.output(); } 运行界面: 继续阅读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 程序 实现 多项式 求和
![提示](https://static.bdocx.com/images/bang_tan.gif)