您的位置:首页 > 编程语言

关于计算数学多项式的代码

2014-07-22 16:46 288 查看
#include <iostream>

#include <cstdio>

#include <string>

#include <cstring>

#include <cstdlib>

#include <vector>

using namespace std;

int a[10000001],b[10000001],zhongjian[10000];

int main()
{
int i,j,jishu=2,n,m;//n为当前多项式的阶数,m为新的多项式的阶数,ij为计数变量,jishu为记下第几个多项式专用
printf("请输入第1个多项式的阶数:");
scanf("%d",&n);
printf("请输入每一项的系数:");
for(i=n;i>=0;i--)//输入当前多项式的阶数
scanf("%d",&a[i]);
printf("请输入第2个多项式的阶数:");
while(~scanf("%d",&m),m)
{
memset(zhongjian,0,sizeof(zhongjian));
jishu++;//新的多项式
printf("请输入每一项的系数:");
for(i=m;i>=0;i--)//输入新的多项式的阶数
scanf("%d",&b[i]);
//开始整合运算
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
zhongjian[i+j]=zhongjian[i+j]+a[i]*b[j];
for(i=0;i<=m+n;i++)//把计算好的多项式放在a中
a[i]=zhongjian[i];
printf(" f(x)= ");
for(i=m+n;i>=0;i--)
{
if(i==m+n)
{
if(a[i]!=1&&a[i]!=0)
printf("%d x^%d ",a[i],i);
else if(a[i]==1)
printf("x^%d ",i);
}
else if(i>1&&a[i]>0&&i!=m+n)
{
if(a[i]!=1)
printf("+ %d x^%d ",a[i],i);
else
printf("+ x^%d ",i);
}
else if(i>1&&a[i]<0&&i!=m+n)
{
if(a[i]!=1)
printf("%d x^%d ",a[i],i);
else
printf("x^%d ",i);
}
else if(i==1&&a[i]>0)
{
if(a[i]!=1)
printf("%+ d x ",a[i],i);
else
printf("+ x ",i);
}
else if(i==1&&a[i]<0)
{
if(a[i]!=1)
printf("%d x ",a[i],i);
else
printf("x ",i);
}
else if(i==0&&a[i]>0)
printf(" + %d ",a[0]);
else if(i==0&&a[i]<0)
printf("%d ",a[0]);
}
printf("\n\n请输入第%d个多项式的阶数:",jishu);
}
return 0;
}


//该代码利用的就是模拟
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: