| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:[求助]!如何使这个程序正确的输出结果?
只看楼主 加入收藏
不安分子
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-1
收藏
 问题点数:0 回复次数:6 
[求助]!如何使这个程序正确的输出结果?
#include<iostream>
using namespace std;

class mploy
{
public:
mploy *next;
mploy *creat(char);
void addploy(mploy *,mploy *);
void print(mploy *);
private:
int coef;
int expn;
};
int n;
mploy *mploy::creat(char ch)
{
mploy *head,*p1,*p2;
n=0;
p1=p2=new mploy;
cout<<"Input多项式的系数和指数"<<endl;
cin>>p1->coef>>p1->expn;
head=NULL;
while(p1->coef!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=new mploy;
cin>>p1->coef>>p1->expn;
}
p2->next=NULL;
return head;
}

void mploy::addploy(mploy *a,mploy *b)
{
mploy *ha,*hb,*p,*q;
ha=a;
hb=b;
int x;
p=a->next;
q=b->next;
while(p!=NULL&&q!=NULL)
{
if(p->expn<q->expn)
{
ha=p;
p=p->next;
}
else if(p->expn==q->expn)
{
x=p->coef+q->coef;
if(x!=0)
{
p->coef=x;
ha=p;
}
else
{
ha->next=p->next;
}
hb->next=q->next;
q=hb->next;
p=ha->next;
}
else
{
hb=q->next;
q->next=p;
ha->next=q;ha=q;q=hb;
}
}
if (q!=NULL)
ha->next=q;
}

void mploy::print(mploy *h)
{
mploy *t;
t=h;
if(h!=NULL)
if(t->coef!=0)
{
if(t->expn!=0)
cout<<t->coef<<"x^"<<t->expn;
else
cout<<t->coef;
}
while(t!=NULL)
{
if(t->coef>0)
cout<<"+";
cout<<t->coef<<"x^"<<t->expn;
t=t->next;
}
cout<<endl;
}


void main()
{
mploy *a,*b;
mploy c;
a=c.creat('A');
cout<<"A=";
c.print(a);
b=c.creat('B');
cout<<"B=";
c.print(b);
c.addploy(a,b);
cout<<"M=";
c.print(a);
}

运行时是“
Input多项式的系数和指数
1 1 2 2 3 3 0 0
A=1x^1+1x^1+2x^2+3x^3
Input多项式的系数和指数
2 1 3 2 4 3 0 0
B=2x^1+2x^1+3x^2+4x^3
M=1x^1+1x^1+5x^2+7x^3
后面就能正确输出,前面就不行,不知道为什么要重复输出一个项,
请帮我看看 谢谢了

搜索更多相关主题的帖子: 结果 输出 
2006-06-02 09:42
ww1985
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-10-11
收藏
得分:0 
晕掉,

我相信爱情,相信所有的人性,所以我努力地挣钱、爱钱。我只是不希望我的爱情和人性受到别人的金钱的考验罢了。爱你到永远!
2006-06-03 18:59
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
至于你说的输入了两遍是因为你在print函数的if语句中已经输入过一遍,所以就重复了
还有,你的add函数我觉得看得麻烦,你可以说说他的pre和post吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-03 20:56
不安分子
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-1
收藏
得分:0 
我觉得print函数没错,
你可以说说他的pre和post吗?什么意思???
2006-06-04 00:45
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
void mploy::print(mploy *h)
{
mploy *t;
t=h;
if(h!=NULL)
if(t->coef!=0)
{
if(t->expn!=0)
cout<<t->coef<<"x^"<<t->expn;
else
cout<<t->coef;
//t=t->next;
}
while(t!=NULL)
{
if(t->coef>0)
cout<<"+";
cout<<t->coef<<"x^"<<t->expn;
t=t->next;
}
cout<<endl;
}


//pre: 前注
//post: 后注


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-04 09:32
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 

补充说明new和delete应该对应
#include<iostream>
using namespace std;
class mploy
{
public:
mploy *next;
mploy *creat(char);
friend void dele(mploy* pp);
void addploy(mploy *,mploy *);
void print(mploy *);
private:
int coef;
int expn;
};
int n;
void dele(mploy *pp)
{
if(pp==0)
return;
else
{
dele(pp->next);
delete pp;
}
}
mploy *mploy::creat(char ch)
{
mploy *head,*p1,*p2;
n=0;
p1=p2=new mploy;
cout<<"Input多项式的系数和指数"<<endl;
cin>>p1->coef>>p1->expn;
head=NULL;
while(p1->coef!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=new mploy;
cin>>p1->coef>>p1->expn;
}
p2->next=NULL;
delete p1;
return head;
}
void mploy::addploy(mploy *a,mploy *b)
{
if(a==0||b==0)
return ;
mploy *ha,*hb,*p,*q;
ha=a;
hb=b;
int x;
p=a->next;
q=b->next;
while(p!=NULL&&q!=NULL)
{
if(p->expn<q->expn)
{
ha=p;
p=p->next;
}
else if(p->expn==q->expn)
{
x=p->coef+q->coef;
if(x!=0)
{
p->coef=x;
ha=p;
}
else
{
ha->next=p->next;
}
hb->next=q->next;
q=hb->next;
p=ha->next;
}
else
{
hb=q->next;
q->next=p;
ha->next=q;ha=q;q=hb;
}
}
if (q!=NULL)
ha->next=q;
}

void mploy::print(mploy *t)
{
if(t==NULL)
return ;
if(t->coef!=0)
{
if(t->expn!=0)
cout<<t->coef<<"x^"<<t->expn;
else
cout<<t->coef;
}
while(t=t->next)
{

if(t->coef>0)
cout<<"+";
cout<<t->coef<<"x^"<<t->expn;
}
cout<<endl;
}
void main()
{
mploy *a,*b;
mploy c;
a=c.creat('A');
cout<<"A=";
c.print(a);
b=c.creat('B');
cout<<"B=";
c.print(b);
c.addploy(a,b);
cout<<"M=";
c.print(a);
dele(b);
dele(a);
}


2006-06-04 11:36
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
00000建议不要给人代码,授人以鱼不如授人以渔,特别是这么长的,人家要你告诉他为什么,你让他自己看,难~!
呵呵,别怪我多嘴啊~!

[此贴子已经被作者于2006-6-4 13:15:05编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-04 12:02
快速回复:[求助]!如何使这个程序正确的输出结果?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017411 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved