| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:麻烦大家看看这个一元多项式相乘,错在那里。
只看楼主 加入收藏
a475875867
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-4-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
麻烦大家看看这个一元多项式相乘,错在那里。
问题出现在multiply(linknode *fa,linknode *fb,linknode *fc)建新表fc中,我这样写多项式相乘应该不对,请大家不要站在如何写才对的基础上看。我主要想知道我这样写错在那里了,麻烦大家了。
#include <stdio.h>
#include <math.h>
typedef struct LinkNode
{
    float coef;                                  //多项式系数
    int index;                                   //多项式指数
    struct LinkNode *next;
}linknode;

int createlink(linknode *head)
{
    head->next=NULL;
    int z;
    linknode *p,*s;
    p=head;
    float a=1;
    int n;
    int b=1;
    printf("请按多项式指数由高到低输入系数和指数:\n");
    while(z)
    {
        scanf("%f %d",&a,&b);
        if(fabs(a)>0.000001)
        {
            s=new linknode;
            s->coef=a;
            s->index=b;
            s->next=NULL;
            p->next=s;
            p=s;
            n++;
        }
        else z=0;
    }
    return n;
}

void show(linknode *head)
{
    linknode *p;
    p=head->next;
    while(p&&p->next)
    {
            printf("\(%fx^%d\)+",p->coef,p->index);
            p=p->next;
    }
    printf("\(%fx^%d\) ",p->coef,p->index);
    printf("\n");


}
void multiply(linknode *fa,linknode *fb,linknode *fc)      
{
    int i,j,L;                                 //j和L分别记录链表fa和链表fb的长度
    linknode *m,*n,*k,*p;
    m=fa->next;
    n=fb->next;
    fc->next=NULL;                           
    k=fc;
    for(i=1;i<=L;i++)                          //从链表fa的第一个结点开始
    {
               
        for(i=1;i<=j;j++)                      //乘以链表fb的所有结点  
        {                           
            p=new linknode;                    //以下是将一个链表fa的结点乘以链表fb的一个结点所得的结果放进新建链表fc每个结点中,建新表fc的过程
            p->coef=m->coef*n->coef;
            p->index=m->index+n->index;
            p->next=NULL;
            k->next=p;
            n=n->next;
        }
        m=m->next;
    }
}
            



void main()
{
    int L,j;
    linknode *fa,*fb,*fc;
    fa=new linknode;
    fb=new linknode;
    fc=new linknode;
    L=createlink(fa);          //L记录链表fa的长度
    printf("fa(x)=");
    show(fa);
    j=createlink(fb);          //j记录链表fb的长度
    printf("fb(x)=");
    show(fb);   
    void multiply(linknode *fa,linknode *fb,linknode *fc);
    printf("fa(x)*fb(x)=");
    show(fc);
}
搜索更多相关主题的帖子: include 多项式 如何 
2012-04-15 10:42
a475875867
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-4-14
收藏
得分:0 
不好意思,上面L是记录链表fa的长度,j是记录链表fb的长度。打错了

2012-04-15 10:48
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:20 
都知道不对, 难道还要按照不对的思路去走么?

试着给自己程序设计步骤, 会容易分析的
2012-04-16 10:28
a475875867
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-4-14
收藏
得分:0 
谢谢这几天忙着写这份作业,写到我烦了。今天终于写完了。以前只是听老师讲和看书,从来没实践过。没想到,一实践就错误百出啊。看来以后有空还是要多多练习才行。这次收获挺大的,弄明白很多。不够还有一些到现在都没弄清,我只是换了方法才写好的。改天问问你
2012-04-16 22:55
快速回复:麻烦大家看看这个一元多项式相乘,错在那里。
数据加载中...
 
   



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

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