C++一元多项式相加的结果输出有关问题
C++一元多项式相加的结果输出问题
输出多项式系数出问题,输出不全,但是只输出指数就没问题;
问题行已经标记了:
cout<<p->data.coef<<" "<<p->data.expn<<" "<<endl;//就是这里的p->data.coef出问题了
代码如下:
#include <iostream>
using namespace std;
struct term
{
double coef;//系数
int expn;//指数
};
struct PNode
{
term data;
PNode *next;
};
class Polyn
{
public:
Polyn(){phead = new PNode;phead->next=NULL;}
~Polyn(){
do{delete phead;
phead=phead->next;
}while(phead!=NULL);
}
void clear(){phead->next=NULL;}
void creatp();
Polyn PolyAdd(Polyn Pb);
void Print();
private:
PNode *phead;
};
Polyn Polyn::PolyAdd(Polyn Pb)
{
Polyn Pc;
PNode *p1,*p2,*p3;
p1=phead;
p2=Pb.phead;
p3=Pc.phead;
PNode *t1=p1->next,*t2=p2->next,*t3=p3;
while(t1&&t2)
{
if(t1->data.expn<t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
cout<<1<<endl;
}
else if(t1->data.expn>t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
cout<<2<<endl;
}
else{
double a=t1->data.coef+t2->data.coef;
if(a!=0.0)
{
t3->next=new PNode;
t3=t3->next;
t3->data.coef=a;
t3->data.expn = t1->data.expn;
}
t1=t1->next;
t2=t2->next;
cout<<3<<endl;
}
}
while(t1!=NULL){
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
}
while(t2!=NULL){
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
}
t3->next=NULL;
return Pc;
}
void Polyn::creatp()
{
PNode *p,*q;
int n;
q=phead;
cout<<"输入n"<<endl;
cin>>n;
cout<<"输入各项系数和指数:"<<endl;
输出多项式系数出问题,输出不全,但是只输出指数就没问题;
问题行已经标记了:
cout<<p->data.coef<<" "<<p->data.expn<<" "<<endl;//就是这里的p->data.coef出问题了
代码如下:
#include <iostream>
using namespace std;
struct term
{
double coef;//系数
int expn;//指数
};
struct PNode
{
term data;
PNode *next;
};
class Polyn
{
public:
Polyn(){phead = new PNode;phead->next=NULL;}
~Polyn(){
do{delete phead;
phead=phead->next;
}while(phead!=NULL);
}
void clear(){phead->next=NULL;}
void creatp();
Polyn PolyAdd(Polyn Pb);
void Print();
private:
PNode *phead;
};
Polyn Polyn::PolyAdd(Polyn Pb)
{
Polyn Pc;
PNode *p1,*p2,*p3;
p1=phead;
p2=Pb.phead;
p3=Pc.phead;
PNode *t1=p1->next,*t2=p2->next,*t3=p3;
while(t1&&t2)
{
if(t1->data.expn<t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
cout<<1<<endl;
}
else if(t1->data.expn>t2->data.expn)
{
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
cout<<2<<endl;
}
else{
double a=t1->data.coef+t2->data.coef;
if(a!=0.0)
{
t3->next=new PNode;
t3=t3->next;
t3->data.coef=a;
t3->data.expn = t1->data.expn;
}
t1=t1->next;
t2=t2->next;
cout<<3<<endl;
}
}
while(t1!=NULL){
t3->next=new PNode;
t3=t3->next;
t3->data=t1->data;
t1=t1->next;
}
while(t2!=NULL){
t3->next=new PNode;
t3=t3->next;
t3->data=t2->data;
t2=t2->next;
}
t3->next=NULL;
return Pc;
}
void Polyn::creatp()
{
PNode *p,*q;
int n;
q=phead;
cout<<"输入n"<<endl;
cin>>n;
cout<<"输入各项系数和指数:"<<endl;