找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1774|回复: 6

[求助]!如何使这个程序正确的输出结果?

[复制链接]
发表于 2009-11-3 02:57:20 | 显示全部楼层 |阅读模式 IP:江苏扬州
#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
后面就能正确输出,前面就不行,不知道为什么要重复输出一个项,
请帮我看看 谢谢了
发表于 2009-11-3 02:57:21 | 显示全部楼层 IP:江苏扬州
晕掉,
回复

使用道具 举报

发表于 2009-11-3 02:57:22 | 显示全部楼层 IP:江苏扬州
至于你说的输入了两遍是因为你在print函数的if语句中已经输入过一遍,所以就重复了
还有,你的add函数我觉得看得麻烦,你可以说说他的pre和post吗?
回复

使用道具 举报

发表于 2009-11-3 02:57:22 | 显示全部楼层 IP:江苏扬州
我觉得print函数没错,
你可以说说他的pre和post吗?什么意思???
回复

使用道具 举报

发表于 2009-11-3 02:57:23 | 显示全部楼层 IP:江苏扬州
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: 后注
回复

使用道具 举报

发表于 2009-11-3 02:57:25 | 显示全部楼层 IP:江苏扬州
补充说明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);
}
回复

使用道具 举报

发表于 2009-11-3 02:57:27 | 显示全部楼层 IP:江苏扬州
00000建议不要给人代码,授人以鱼不如授人以渔,特别是这么长的,人家要你告诉他为什么,你让他自己看,难~!
呵呵,别怪我多嘴啊~!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 11:28 , Processed in 0.179582 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表