65,211
社区成员
发帖
与我相关
我的任务
分享
void poly::output() const
{
out<<"\n"; //<=== 1. 每个poly另起一行输出, 比较清楚
poly e(*this);int i,sign=0;
double *a=e.p_c; int b=e.n;
for (i=b;i>=0;i--)
{
if (a[i]==0) continue;
else sign+=1;
if (sign==2) {sign-=1;out <<"+";}
if ((i==1)&&(a[i]!=1)) {out <<a[i] <<"x";continue;}
if ((i==1)&&(a[i]==1)) {out <<"x";continue;}
if (i==0) {out <<a[i];continue;}
if (a[i]==1) {out <<"x^" <<i;continue;}
out <<a[i] <<"x^" <<i;
}
}
poly &poly::operator = (const poly &r)
{
if (p_c!=0) delete []p_c;
p_c=new double [maxsize];
n=r.n;
for (int i=0; i<maxsize; ++i) { // <=====2 要copy每一项的系数
p_c[i]=r.p_c[i];
}
return *this;
}
poly poly::operator +(const poly &r) const
{
poly e(*this);poly a;
int i;
e.n=n>r.n?n:r.n; // <====3 确定最大的x系数
for (i=e.n;i>=0;i--)
e.p_c[i]=e.p_c[i]+r.p_c[i];
return e;
}
poly ::poly (const poly &r)
{
set (r.p_c,r.n);
} poly &poly::operator = (const poly &r)
{
if (p_c!=0) delete []p_c;
p_c=new double [maxsize];
n=r.n;
p_c=r.p_c;
return *this;
}