实验目的:设计一个一元稀疏多项式简单计算器。
实验内容与要求 一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。 (3)多项式a与多项式b相乘,建立多项式。
#include<iostream>
using namespace std;
int init(int* num,int len);
void mu(int* num,int* num2,int* num3,int a1,int a2,int len);
int main()
{
int n,i,j,a1,a2;
int num[30]={0},num2[30]={0},num3[30]={0};
a1=init(num,30);
a2=init(num2,30);//传回最高位
mu(num,num2,num3,a1,a2,30);//相乘运算
}
int init(int* num,int len)
{
int n,i,c,c1,c2,tmp=0;
cout<<"请输入多项式"<<endl<<"n:";
cin>>n;
for(i=0;i<n;i++)
{
cin>>c1>>c;
tmp=(tmp>c)?tmp:c;
num[c]=c1;
}
c2=tmp;
cout<<"多项式为:";
if(num[c2]!=1)
cout<<num[c2];
if(c2!=1)
{
cout<<"x^"<<c2;
}
else
{
cout<<"x";
}
for(c2--;c2>=0;c2--)
{
if(num[c2])
{
cout<<"+";
if(num[c2]!=1)
cout<<num[c2];
if(c2!=1&&c2!=0)
{
cout<<"x^"<<c2;
}
else if(c2==1)
{
cout<<"x";
}
}
}
cout<<endl;
return tmp;
}
void mu(int* num,int* num2,int* num3,int a1,int a2,int len)
{
cout<<endl<<"相乘结果为:";
int tmp=0;
for(int i=0;i<=a1;i++)
{
if(num[i]==0) continue;
for(int j=0;j<=a2;j++)
{
if(num2[j]==0) continue;
tmp=(tmp>(i+j))?tmp:(i+j);
num3[i+j]+=num[i]*num2[j];
}
}
if(num3[tmp]!=1)
cout<<num3[tmp];
if(num3[tmp]==1)
{
cout<<"x";
}
else
{
cout<<"x^"<<tmp;
}
for(tmp--;tmp>=0;tmp--)
{
if(num3[tmp])
{
cout<<"+";
if(num3[tmp]!=1)
cout<<num3[tmp];
if(tmp!=1&&tmp!=0)
{
cout<<"x^"<<tmp;
}
else if(tmp==1)
{
cout<<"x";
}
}
}
}