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;
}
展开
 我来答
百度网友b79519e
2012-11-11 · TA获得超过3399个赞
知道大有可为答主
回答量:1417
采纳率:100%
帮助的人:1338万
展开全部
你的函数 参数传递的不对

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 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
magic0f
2012-11-11 · 超过32用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:94.6万
展开全部
你这编译能通过吗? 声明x y m n的时候先初始化吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woyaodangti
2012-11-12
知道答主
回答量:49
采纳率:0%
帮助的人:17.3万
展开全部
传参问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式