编写程序实现多项式求和

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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--;
}
}
}
}
return k=n;
}
void creat(Poly node[],int n)//创建函数
{
int i;
cout<<"请依次输入每一项的系数指数:";
}
else
{
qa->coef=sum;
pa=qa;
qa=qa->next;
pb->next=qb->next;
delete qb;
qb=pb->next;
}
}
}
if(qb)
pa->next=qb;
}
void main()
{
Poly A,B;
poly a={{1,2},{2,0},{3,1},{4,5},{6,8}};
pa=head;
qa=pa->next;
pb=L.head;
qa=pa->next;
pb=L.head;
qb=pb->next;
while(qa&&qb)
{
if(qa->exp<qb->exp)
{
pa=qa;
qa=qa->next;
}
else if(qa->exp>qb->exp)
{
pb->next=qb->next;
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<p->exp)
q=q->next;
p->next=q->next;
q->next=p;
p=r;
}
}
}
A.output();
cout<<"有序多项式B为:";
B.output();
A.add(B);
cout<<"和多项式为:";
A.output();
}
运行界面:
print(node1,p);
}
运行界面:
方法二:
#include<iostream>
using namespace std;
# define N 30
int main()
{
int a[N]={0},b[N]={0},c[N]={0},n,i;
cout<<"请输入第一个多项式的最大指数:";
cin>>n;
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++)
}
void main()//主函数
{
int n,p,a,b;
Poly node1[N],node2[N];
cout<<"请输入第一个多项式:";
cout<<"请输入多项式的项数(小于30):";
cin>>n;
creat(node1,n);
a=p=sort(node1,n);
print(node1,p);
for(i=0;i<=N;i++)
c[i]=a[i]+b[i];
for(i=0;i<N;i++)
{
if(c[i]!=0)
{
if(i==0)
cout<<c[0]<<"x^"<<0;
else
{
if(c[i]>0)
cout<<"+"<<c[i]<<"x^"<<i;
else
cout<<c[i]<<"x^"<<i;
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);
for(i=1;i<=n;i++)
cin>>node[i].coef>>node[i].exp;
}
void addpoly(Poly node1[],Poly node2[],int n1,int n2)//相加函数
{
int i;
for(i=n1+1;i<=n1+n2;i++)
node1[i]=node2[i-n1];
void Poly::output()
{
PolyNode *p;
p=head->next;
while(p)
{
cout<<p->coef<<"x^"<<p->exp<<" ";
p=p->next;
}
cout<<endl;
}
void Poly::add(Poly L)
{
float sum;
PolyNode *pa,*pb,*qa,*qb;
方法一:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define N 30
struct Poly
{
float coef; //系数
int exp; //指数
}node[30];
void print(Poly node[],int n)//顺序输出函数
{
int i;
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<<node[i].coef<<"x^"<<node[i].exp;
}
cout<<endl;
qb->next=qa;
pa->next=qb;
pa=qb;
qb=pb->next;
}
else
{
sum=qa->coef+qb->coef;
if(sum==0)
{
pa->next=qa->next;
delete qa;
qa=pa->next;
pb->next=qb->next;
delete qb;
qb=pb->next;
{
PolyNode *s,*r;
int i;
r=head;
for(i=0;i<n;i++)
{
s=new PolyNode;
s->coef=a[i].coef;
s->exp=a[i].exp;
s->next=NULL;
r->next=s;
r=s;
}
}
void Poly::sort()
{
PolyNode *p,*q,*r;
void add(Poly L);
};
Poly::Poly()
{
head=new PolyNode;
head->next=NULL;
}
Poly::~Poly()
{
PolyNode *p;
while(head)
{
p=hபைடு நூலகம்ad;
head=head->next;
delete p;
}
head=NULL;
}
void Poly::create(poly a,int n)
poly b={{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为:";
int exp; //指数
PolyNode *next;
};
class Poly
{
private:
PolyNode *head;
public:
Poly();
~Poly();
void create(poly a,int n);
void output();
void sort(); //多项式结点非降序排序
}
}
}
}
运行界面:
方法三:
#include<iostream>
using namespace std;
#define Max 20
typedef struct
{
float coef; //系数
int exp; //指数
}poly[Max];
struct PolyNode
{
float coef; //系数
}
int sort(Poly node[],int n)//排序函数,合并同指数项去除0系数项
{
int i,j,k,t;
Poly nodet[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];
cout<<"请输入第一个多项式的系数:"<<endl;
for(i=0;i<=n; i++)
cin>>a[i];
cout<<"请输入第二个多项式的最大指数:";
cin>>n;
cout<<"请输入第二个多项式的系数:"<<endl;
for(i=0;i<=n; i++)
cin>>b[i];
cout<<"多项式之和为:";
相关文档
最新文档