两个多项式求和

合集下载
  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 <stdio.h>
#include <algorithm>
#include <string.h>
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)
printf("\nB:");
flag=0;
for(i=200;i>=0;i--)
{
if(flag==0&&nb[i]!=0)
{
if(i==100)
{
if(nb[i]>0)printf("%d",nb[i]);
else printf("%d",nb[i]);
}
else if(i==101)
{
if(nb[i]==1)
printf("x");
else if(nb[i]==-1)
printf("-x");
else if(nb[i]>0)
printf("%dx",nb[i]);
else
printf("%dx",nb[i]);
}
else if(nb[i]==1)
printf("x^%d",i-100);
else if(nb[i]==-1)
printf("-x^%d",i-100);
else if(nb[i]>=0)
printf("%dx^%d",nb[i],i-100);
else
printf("%dx^%d",nb[i],i-100);
flag++;
}
else if(nb[i]!=0)
{
if(i==100)
{
if(nb[i]>0)printf("+%d",nb[i]);
else printf("%d",nb[i]);
}
else if(i==101)
{
if(nb[i]==1)
else if(nb[i]==-1)
printf("-x");
else if(nb[i]>0)
printf("+%dx",nb[i]);
else
printf("%dx",nb[i]);
}
else if(nb[i]==1)
printf("+x^%d",i-100);
else if(nb[i]==-1)
printf("-x^%d",i-100);
else if(nb[i]>=0)
printf("+%dx^%d",nb[i],i-100);
else
printf("%dx^%d",nb[i],i-100);
}
}
if(flag==0)
printf("0");
for(i=0;i<=200;i++)
{
nb[i]=na[i]+nb[i];
}
flag=0;
printf("\nA+B:");
for(i=200;i>=0;i--)
{
if(flag==0&&nb[i]!=0)
{
if(i==100)
{
if(nb[i]>0)printf("%d",nb[i]);
else printf("%d",nb[i]);
}
else if(i==101)
{
if(nb[i]==1)
printf("x");
else if(nb[i]==-1)
printf("-x");
else if(nb[i]>0)
printf("%dx",nb[i]);
else
printf("%dx",nb[i]);
}
else if(nb[i]==1)
printf("x^%d",i-100);
else if(nb[i]==-1)
printf("-x^%d",i-100);
else if(nb[i]>=0)
printf("%dx^%d",nb[i],i-100);
else
printf("%dx^%d",nb[i],i-100);
flag++;
}
else if(nb[i]!=0)
{
if(i==100)
{
if(nb[i]>0)printf("+%d",nb[i]);
else printf("%d",nb[i]);
}
else if(i==101)
{
//printf("nb[i]:%d\n",nb[i]);
if(nb[i]==1)
printf("+x");
else if(nb[i]==-1)
printf("-x");
else if(nb[i]>0)
printf("+%dx",nb[i]);
else
printf("%dx",nb[i]);
}
else if(nb[i]==1)
printf("+x^%d",i-100);
else if(nb[i]==-1)
printf("-x^%d",i-100);
else if(nb[i]>=0)
printf("+%dx^%d",nb[i],i-100);
else
printf("%dx^%d",nb[i],i-100);
}
}
if(flag==0)
printf("0");
printf("\n");
}
return 0;
}
运行结果:。

相关文档
最新文档