| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1116 人关注过本帖
标题:这是一元多项式的程序,求各位大神帮忙调试并修改下错误,感谢!
只看楼主 加入收藏
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
收藏
已结贴  问题点数:17 回复次数:6 
这是一元多项式的程序,求各位大神帮忙调试并修改下错误,感谢!
//一元多项式那个我着急用这个程序,麻烦哪位大神帮忙改下,谢谢哦
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
typedef struct node
{
    int coef;      //系数
    int expn;      //指数
    struct node *next;
}ploynom;

void main()
{
    ploynom *pa,*pb,*pc;
    printf("please input tne ploynom of pa:\n");
    pa=creatployn();
    printf("print the ploynom of pa:\n");
    printployn(pa);
    printf("please input tne ploynom of pb:\n");
    pb=creatployn();
    printf("print the ploynom of pb:\n");
    printployn(pb);  printf("\n\n\n");
    pc=(ploynom *)malloc(sizeof(ploynom));
    pc->next=NULL;
    pc=addployn(pa,pb);
}

ploynom *creatployn()
{
    int c,e;
    ploynom *head,*r,*p;
    head=(ploynom *)malloc(sizeof(ploynom));
    r=head;
    scanf("%d,%d",&c,&e);
    while(c!=0)              //以输入系数c为0作为结束标志
    {
        p=(ploynom *)malooc(sizeof(ploynom));
        p->coef=c;
        p->expn=e;
        r->next=p;         //在当前表尾作插入
        r=p;
        scanf("%d,%d\n",&c,&e);
    }
    r->next=NULL;
    return head;
}

polynom *addployn(ploynom *pa,ploynom *pb)
{
    ploynom *qa,*qb,*q1;
    qa=pa->next;          //qa,qb,初值分别指向pa,pb的第一个结点
    qb=pb->next;
    ploynom *headc,*pc,*qc;
    pc=(ploynom *)malloc(sizeof(ploynom));
    pc->next=NULL;
    headc=pc;
    while(qa&&qb)           //当二者均非空时
    {
        qc=(ploynom *)malloc(sizeof(ploynom));
        if(qa->expn==qb->expn)
        {
            qc->coef=qa->coef+qb->coef;
            if((qc->coef)!=0)             //系数之和不为0
            {
                qc->expn=qa->expn;
                qa=qa->next;
                q1=qb;                //将已经把指数和系数都传给qc后没用的qb的第一个结点放到q1中
                qb=qb->next;
                free(q1);               //释放掉第一个和qa系数相等的qb结点
            }
            else
            {
                q1=qa; qa=qa->next; free(q1);
                q1=qb; qb=qb->next; free(q1);
            }
        }
        else if(qa->expn<qb->expn)
        {
            qc->coef=qa->coef;
            qc->expn=qa->expn;
            q1=qa;
            qa=qa->next;
            free(q1);
        }
        else(qa->expn>qb->expn)
        {
            qc->coef=qb->coef;
            qc->expn=qb->expn;
            q1=qb;
            qb=qb->next;
            free(q1);
        }
        if((qc->coef)!=0)
        {
            qc->next=qc->next;
            pc->next=qc;
            pc=qc;
        }
    }
    while(qa!=NULL&&qb==NULL)
    {
        qc=(ploynom *)malloc(sizeof(ploynom));
        qc->coef=qa->coef;  qc->expn=qa->expn;
        qa=qa->next;
        qc->next=pc->next;
        pc->next=qc;  pc=qc;
    }
    while(qa==NULL&&qb!=NULL)
    {
        qc=(ploynom *)malloc(sizeof(ploynom));
        qc->coef=qb->coef;  qc->expn=qb->expn;
        qb=qb->next;
        qc->next=pc->next;
        pc->next=qc;  pc=qc;
    }
    return headc;
}

void printployn(ploynom *p)
{
    ploynom *q=p->next;
    if(!q)
        printf("It's empty!!!");
    while(q)
    {
        if(q->coef>0)   putchar('+');
        if(q->coef!=1&&q->coef!=-1)
        {
            printf("%2d",q->coef);
            if(q->expn==1)  putchar('x');
            else if(q->expn)  printf("x^%d",q->expn);
        }
       else
       {
           if(q->coef==1)
           {
               if(q->expn==0)  putchar('1');
               else if(q->expn==1)  putchar('x');
               else  printf("x^%d",q->expn);
           }
           if(q->coef==-1)
           {
               if(q->expn==0)  putchar('-1');
               else if(q->expn==1)  putchar('-x');
               else  printf("-x^%d",q->expn);
           }
       }
       q=q->next;
    }
    printf("\n");
}










搜索更多相关主题的帖子: 多项式 please include 
2016-09-25 09:19
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
    while(c!=0)              //以输入系数c为0作为结束标志
    {
        p=(ploynom *)malooc(sizeof(ploynom));
polynom *addployn(ploynom *pa,ploynom *pb)
else(qa->expn>qb->expn)
        {
            qc->coef=qb->coef;
            qc->expn=qb->expn;
            q1=qb;
            qb=qb->next;
            free(q1);
        }

标记红色的地方都是有问题的,自己仔细看看。
2016-09-25 20:36
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
收藏
得分:0 
回复 2楼 linlulu001
大神,只有一个错误,但分好几个呢,比如:
 error C2040: 'creatployn' : 'struct node *()' differs in levels of indirection from 'int ()'
 error C2223: left of '->next' must point to struct/union
等等,我真的是不会改,求帮忙。
2016-09-25 22:54
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:7 
何止一个错,明明是三个错。
第一个红色的malooc是什么玩意,明明是malloc
第二个polynom那跑出来的,你明明typedef struct node  ploynom
第三个else(qa->expn>qb->expn)是什么写法,else什么时候后面可以直接加逻辑条件了。

真不懂你用的是什么编译器。
这三个错误改完,至少代码可以运行。

[此贴子已经被作者于2016-9-25 23:05编辑过]

2016-09-25 23:03
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
收藏
得分:0 
回复 4楼 linlulu001
谢谢大神啦,我刚刚改好了
2016-09-25 23:41
pfj148900167
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-9-27
收藏
得分:0 
求改好后的代码
2016-09-27 17:17
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
收藏
得分:0 
回复 6楼 pfj148900167
亲,你还要改好的代码吗?
2016-09-29 21:50
快速回复:这是一元多项式的程序,求各位大神帮忙调试并修改下错误,感谢!
数据加载中...
 
   



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

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