匿名用户
1级
2010-12-08 回答
#include "stdafx.h"
#include
using namespace std;
template
class SqList
{
private:
Telem * elem;
int curlen;
int maxlen;
public:
SqList(int maxsz=100):maxlen(maxsz)
{
curlen=0;
elem=new Telem{maxlen};
};
SqList(Telem a[],int n,int maxsz=100):maxlen(maxsz)
{
curlen=n;
elem=new Telem[maxlen];
for(int i=0;i
};
~SqList(){delete[] elem;};
Telem gete(int i)
{
if(i>=1&&i<=curlen)return elem[i-1];
else return NULL;
};
int leng(){return curlen;};
SqList&merg(SqList&l2);//声明两多项式相加的成员函数
};
template
SqList&SqList::merg(SqList&l2)//两多项式相加的成员函数的实现
{
int i,j,m,n,k(0);
m=curlen;n=l2.curlen;
if(m+n<=maxlen)
{
for(i=0;i
{
for(j=0;j
if(elem[2*j+1]==l2.elem[2*i+1]){k++;elem[2*j]+=l2.elem[2*i];break;}
if(j==m/2) {elem[m+2*(i-k)]=l2.elem[2*i];elem[m+2*(i-k)+1]=l2.elem[2*i+1];}
}
}
curlen=m+n-2*k;
return *this;
}
void fun(double a[],int j)//该函数实现:输入2j个double型的数,并将其存储到数组中
{
int i;
for(i=0;i
{
double m,n;
cout<
cin>>m>>n;
a[2*i]=m;
a[2*i+1]=n;
}
}
void main()
{
int i,j,k;
cout<
cin>>j;
cout<
double *a=new double[2*j];
fun(a,j);
cout<
cin>>k;
double *b=new double[2*k];
fun(b,k);
SqListsqla(a,2*j);
SqListsqlb(b,2*k);
sqla.merg(sqlb);
cout<
for(i=1;i<=sqla.leng()/2;i++)//用for循环将这二个多项式结果输出
{
cout<
if(i!=sqla.leng()/2)cout<
}
cout<
}