两个多项式求和

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计实践(大作业)

两个多项式求和

问题描述:

通常在数学中对一元n次多项式可表示成如下形式:

给定一个多项式,在C语言中可以用可读的形式将该多项式规范地输出。例如,给出系数1 5 22 4 33 3 1 1 -1 0,输出为x^5+22x^4+33x^3+x-1。

所使用的规则如下:

(1)多项式各项按照指数的递减顺序输出

(2)次数出现在^之后,如3x^2

(3)常数项仅输出常数。

(4)如果所有的项都是以0作为系数,则仅输出常数0,否则输出非零系数的项。

(5)如果第1项的系数是正数,在该项前没有符号;如果第1项的系数是负数,在该项前是减号,如2x^4+3x^2-10,-2x^4+3x^2-10。

(6)非常数项系数为1和-1不用显示,如x^7-10x^2,-x^2-x+2。

对每一项输入系数和指数。按指数从高到低的顺序输入。系数和指数的大小都在【-100,+100】之间。输入-9999时一个多项式结束。输出:先输出2个多项式,再输出求和后的多项式。每个式子占据一行。

每一组输入对应的输出包括三行,包括2个多项式以及求和后的多项式。每个式子占据一行。

例:

Input:

1 3

2 2 -8 0 -9999

1 10

2

3 6 0 -9999

1 17

2 10 -9 5 0 2 2

3 -1 -1 -3 -9999

-1 17 -3 9 2 6 7 5 3 -1 -9999

Output:

A:x^3+2x^2-8

B:x^10+2x^3+6

A+B:x^10+3x^3+2x^2-2

A:x^17+2x^10-9x^5+23x^-1-x^-3

B:-x^17-3x^9+2x^6+7x^5+3x^-1

A+B:2x^10-3x^9+2x^6-2x^5+26x^-1-x^-3

代码:

#include

#include

#include

using namespace std;

int main()

{

int x,y; //cishu +100;

int i=0;

int couna=0,counb=0;

int na[300];

int nb[300];

int nc[300];

int flag;

while (scanf("%d",&x)!=EOF)

{

flag=0;

memset(na,0,sizeof(na));

memset(nb,0,sizeof(nb));

memset(nc,0,sizeof(nc));

while (x!=-9999)

{

scanf("%d",&y);

na[y+100]=x;

couna++;

scanf("%d",&x);

}

scanf("%d",&x);

while (x!=-9999)

{

scanf("%d",&y);

nb[y+100]=x;

counb++;

scanf("%d",&x);

}

printf("A:");

for(i=200;i>=0;i--)

{

if(flag==0&&na[i]!=0)

{

if(i==100)

{

if(na[i]>0)p rintf("%d",na[i]);

else printf("%d",na[i]);

}

else if(i==101)

{

if(na[i]==1)

printf("x");

else if(na[i]==-1)

printf("-x");

else if(na[i]>0)

printf("%dx",na[i]);

else

printf("%dx",na[i]);

}

else if(na[i]==1)

printf("x^%d",i-100);

else if(na[i]==-1)

printf("-x^%d",i-100);

else if(na[i]>0)

printf("%dx^%d",na[i],i-100);

else

printf("%dx^%d",na[i],i-100);

flag++;

}

else if(na[i]!=0)

{

if(i==100)

{

if(na[i]>0)p rintf("+%d",na[i]);

else printf("%d",na[i]);

}

else if(i==101)

{

if(na[i]==1)

printf("+x");

else if(na[i]==-1)

printf("-x");

else if(na[i]>0)

printf("+%dx",na[i]);

else

printf("%dx",na[i]);

}

else if(na[i]==1)

printf("+x^%d",i-100);

else if(na[i]==-1)

printf("-x^%d",i-100);

else if(na[i]>=0)

printf("+%dx^%d",na[i],i-100);

else

printf("%dx^%d",na[i],i-100);

}

}

if(flag==0)

相关文档
最新文档