C++一元多项式相加问题。数据结构。求高手指点。为什么不行啊??哪里有逻辑问题啊??
题目:通过键盘输入两个形如P0+P1X^1+P2X^2+……+PnX^n的多项式、代码://一元多项式相加.cpp:Definestheentrypointforthec...
题目:通过键盘输入两个形如P0+P1X^1+P2X^2+……+PnX^n的多项式、
代码:
// 一元多项式相加.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct node{
float coef;
int exp;
int flag;
struct node *next;
}PolyNode,*PolyList;
PolyNode *head_a,*head_b,*head_c;
PolyList a,b,c;
PolyList input(int x,int y)
{
PolyNode *p,*q;
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
while(x!=0&&y!=0)
{
p=new PolyNode;
q->coef=x;
q->exp=y;
q->flag=0;
q->next=p;
q=p;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
}
a=head_a;
return a;
}
PolyList add(PolyList a,PolyList b)
{
PolyNode *p,*q,*r,*s;
p=head_a;
q=head_b;
head_c=new PolyNode;
r=head_c;
if(p->exp==q->exp)
{
s=new PolyNode;
r->coef=p->coef+q->coef;
r->exp=p->exp;
p->flag=1;
p=p->next;
q=head_b;
r->next=s;
r=s;
}
else
{
s=new PolyNode;
r->coef=p->coef;
r->exp=p->exp;
p->flag=1;
p=p->next;
q=head_b;
r->next=s;
r=s;
}
c=head_c;
return c;
}
void output (PolyList c)
{
PolyNode *p;
p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
}
}
int main(int argc, char* argv[])
{
int x,y;
a=input(x,y);
int m,n;
b=input(m,n);
add(a,b);
output(c);
return 0;
} 展开
代码:
// 一元多项式相加.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct node{
float coef;
int exp;
int flag;
struct node *next;
}PolyNode,*PolyList;
PolyNode *head_a,*head_b,*head_c;
PolyList a,b,c;
PolyList input(int x,int y)
{
PolyNode *p,*q;
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
while(x!=0&&y!=0)
{
p=new PolyNode;
q->coef=x;
q->exp=y;
q->flag=0;
q->next=p;
q=p;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
}
a=head_a;
return a;
}
PolyList add(PolyList a,PolyList b)
{
PolyNode *p,*q,*r,*s;
p=head_a;
q=head_b;
head_c=new PolyNode;
r=head_c;
if(p->exp==q->exp)
{
s=new PolyNode;
r->coef=p->coef+q->coef;
r->exp=p->exp;
p->flag=1;
p=p->next;
q=head_b;
r->next=s;
r=s;
}
else
{
s=new PolyNode;
r->coef=p->coef;
r->exp=p->exp;
p->flag=1;
p=p->next;
q=head_b;
r->next=s;
r=s;
}
c=head_c;
return c;
}
void output (PolyList c)
{
PolyNode *p;
p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
}
}
int main(int argc, char* argv[])
{
int x,y;
a=input(x,y);
int m,n;
b=input(m,n);
add(a,b);
output(c);
return 0;
} 展开
3个回答
展开全部
你的函数 参数传递的不对
PolyList input(int x,int y)
{
PolyNode *p,*q;
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;//这一行去掉
这部分改成
PolyList input(int xx,int yy)
{
PolyNode *p,*q;
int x,y;
head_a=new PolyNode;
q=head_a;
x=xx;y=yy;//按照你的意思第一项是通过参数指定的,而不是输入确定的
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
因为指数和系数都是通过键盘输入的实际上市不需要通过参数传递的
改成这样即可
PolyList input()
{
PolyNode *p,*q;
int x,y;//增加这一行
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
void output (PolyList c)
{
PolyNode *p;
p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
}
}
void output (PolyList c)//这个参数c你都没用过,要它作甚
void output ()改成这样即可
或者按照你的本意
void output (PolyList c)
{
PolyNode *p;
p=c;//不用p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
p=p->next;//加上这一行,不然怎么循环
}
}
int main(int argc, char* argv[])
{
int x,y;
a=input(x,y);
int m,n;
b=input(m,n);
polylist c;
c=add(a,b);
output(c);
return 0;
}
你的这个程序使用了太多的全局变量,事实上是不需要的
还有函数的参数传递问题,也没搞清楚
建议好好改下,应该就行了,这个问题并不难,加油吧
PolyList input(int x,int y)
{
PolyNode *p,*q;
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;//这一行去掉
这部分改成
PolyList input(int xx,int yy)
{
PolyNode *p,*q;
int x,y;
head_a=new PolyNode;
q=head_a;
x=xx;y=yy;//按照你的意思第一项是通过参数指定的,而不是输入确定的
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
因为指数和系数都是通过键盘输入的实际上市不需要通过参数传递的
改成这样即可
PolyList input()
{
PolyNode *p,*q;
int x,y;//增加这一行
head_a=new PolyNode;
q=head_a;
cout<<"输入一元多项式子项的系数和指数(按指数递增形式输入),当指数和系数同时为零时输入结束";
cin>>x>>y;
void output (PolyList c)
{
PolyNode *p;
p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
}
}
void output (PolyList c)//这个参数c你都没用过,要它作甚
void output ()改成这样即可
或者按照你的本意
void output (PolyList c)
{
PolyNode *p;
p=c;//不用p=head_c;
while(p!=NULL)
{
cout<<p->coef<<"/t";
cout<<p->exp;
p=p->next;//加上这一行,不然怎么循环
}
}
int main(int argc, char* argv[])
{
int x,y;
a=input(x,y);
int m,n;
b=input(m,n);
polylist c;
c=add(a,b);
output(c);
return 0;
}
你的这个程序使用了太多的全局变量,事实上是不需要的
还有函数的参数传递问题,也没搞清楚
建议好好改下,应该就行了,这个问题并不难,加油吧
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询