| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7173 人关注过本帖, 1 人收藏
标题:一元多项式求导问题
只看楼主 加入收藏
woren
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-12-5
收藏(1)
 问题点数:0 回复次数:7 
一元多项式求导问题

一元多项式的求导

Time Limit:1000MS Memory Limit:10000K
Total Submit:294 Accepted:69

Description

一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的一元多项式进行求导,并输出求导的结果。

Input

输入为一个一元多项式,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。系数和指数均为整数,指数不小于0。

Output

输出为求导结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。
系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0并换行。


Sample Input


2 7 3 5 12 1 6 0 -1 -1


Sample Output


14 6 15 4 12 0

Source

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>

typedef struct node
{
int coef;
int expn;
struct node * next;
} PolyNode;

PolyNode * Create_Poly(char ch) //输入多项式
{
PolyNode * p, *s,*r;
int x; int y;
p=(PolyNode *)malloc(sizeof(PolyNode));
p->next=NULL;
printf("请输入一元多项式%c:(格式:系数 指数,指数递减,以-1 -1结束.)\n",ch);
scanf("%d %d",&x,&y);
while(x!=-1)
{
s=(PolyNode *)malloc(sizeof(PolyNode)); //s每次都被重新分配了一次内存(重新开辟了一个存储空间)
s->coef=x;
s->expn=y;
s->next=NULL;
if(p->next==NULL)
{
p->next=s; //s已经连接到p的后面
r=s;
}
else
{
r->next=s; //当地址相同时,则开辟的内存空间也可用
r=s;
}
scanf("%d %d",&x,&y);
}
return p;
}

PolyNode *QiuDao_Poly(PolyNode *h)
{int a,b;
PolyNode *t;
t=h->next;
while(t->next!=NULL)
{
a=t->coef;
b=t->expn;
a=a*b;
b=b-1;
t=t->next;
}
return t; //一定不要忘记return.
}

void Out_Poly(PolyNode *j)
{ while(j->next!=NULL)
{
printf("%d %d",j->coef,j->expn);
j=j->next;
}
}

int main()
{ PolyNode * f,* g;
printf("多项式求导:\n");
f=Create_Poly('A'); //输入多项式A
Out_Poly(f);
g=QiuDao_Poly(f);
Out_Poly(g);
getch();
}


求好心人帮助,运行后结果莫名奇妙。
怎么改正。
谢谢!谢谢!
菜鸟跪求!

搜索更多相关主题的帖子: 多项式 系数 单项 指数 Limit 
2006-12-05 21:20
kingwyf87
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-6
收藏
得分:0 
化大的吧 我编好了 你参考一下吧 呵呵~
#include <stdio.h>
struct PolyNode
{
double c;
int e;
PolyNode *next;
};

typedef PolyNode *Poly;

int InitPoly( Poly &P )
{
P = new PolyNode;
P->next = NULL;
return 1;
}

int DestroyPoly( Poly &P )
{
while (P!=NULL)
{
PolyNode *q = P;
P = P->next;
delete q;
}
return 1;
}

int InsertAfter( PolyNode *p, double c,int e )
{
if (p==NULL) return 0;
PolyNode *q = new PolyNode;
q->e= e;
q->c= c;
q->next = p->next;
p->next = q;
return 1;
}

int InputPoly( Poly &P )
{
double c;
int e;
PolyNode *q = P;
scanf("%lf%d", &c, &e);
while (e>=0)
{
InsertAfter(q, c, e);
q = q->next;
scanf("%lf%d", &c, &e);
}
return 1;
}

int OutputPoly( Poly P )
{

for (PolyNode *q=P->next; q!=NULL; q=q->next)
{
printf("%d %d ", (int)q->c, (int)q->e);
}
printf( "\n" );
return 1;
}

int DeleteAfter( PolyNode *p )
{
if (p==NULL || p->next==NULL) return 0;
PolyNode *q = p->next;
p->next = p->next->next;
delete q;
return 1;
}

int FPoly( Poly &P )
{
PolyNode *q=P;
while (q->next!=NULL)
{
q->next->c *= q->next->e;
q->next->e--;
if (q->next->c==0)
DeleteAfter(q);
else
q = q->next;
}
return 1;
}


int main()
{
Poly P;
InitPoly(P);
InputPoly(P);
FPoly(P);
OutputPoly(P);
DestroyPoly(P);
return 0;
}


2006-12-06 22:07
woren
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-12-5
收藏
得分:0 
nice!
2006-12-10 18:49
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>

typedef struct node
{
int coef;
int expn;
struct node * next;
} PolyNode;

PolyNode * Create_Poly(char ch) //输入多项式
{
PolyNode * p, *s,*r;
int x; int y;
p=NULL;r=NULL;
printf("请输入一元多项式%c:(格式:系数 指数,指数递减,以-1 -1结束.)\n",ch);
scanf("%d %d",&x,&y);
while(x!=-1)
{
s=(PolyNode *)malloc(sizeof(PolyNode)); //s每次都被重新分配了一次内存(重新开辟了一个存储空间)
s->coef=x;
s->expn=y;
s->next=NULL;
if(p==NULL)
p=s; //s已经连接到p的后面
else
r->next=s; //当地址相同时,则开辟的内存空间也可用
r=s;
scanf("%d %d",&x,&y);
}
return p;
}

PolyNode *QiuDao_Poly(PolyNode *h)
{
PolyNode *t;
t=h;
while(t->next)
{
t->coef*=t->expn;
t->expn--;
t=t->next;
}
return h; //一定不要忘记return. return 回头指针,因为t已经到链尾了...
}

void Out_Poly(PolyNode *j)
{ while(j&&j->expn)
{
printf("%d %d ",j->coef,j->expn);
j=j->next;
}
}

int main()
{ PolyNode * f,* g;
printf("多项式求导:\n");
f=Create_Poly('A'); //输入多项式A
// Out_Poly(f);
printf("\n结果:\n");
g=QiuDao_Poly(f);
Out_Poly(g);
getch();
return 0;
}
在你那基础上改的```

[此贴子已经被作者于2006-12-11 0:57:52编辑过]

2006-12-11 00:31
woren
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-12-5
收藏
得分:0 

谢谢!!!!!

2007-03-14 19:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

看了很久就是不知道多项式的未知量是多少.
2*x^7+3*x^5+12*x,这里的x是多少呢?


倚天照海花无数,流水高山心自知。
2007-03-14 21:41
Huly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-25
收藏
得分:0 
我也是北化的,我也在做这个题。
好像我编着也不对。
2008-10-25 22:19
yanchengmin
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-12-22
收藏
得分:0 
为什么DEV C++ 可以调试,但不能输出正确结果?
2015-12-22 19:57
快速回复:一元多项式求导问题
数据加载中...
 
   



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

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