| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:大家看看这个多项式有什么需要改进的?
只看楼主 加入收藏
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
结帖率:93.33%
收藏
已结贴  问题点数:50 回复次数:6 
大家看看这个多项式有什么需要改进的?
前段时间老师布置了个关于多项式的相加的问题,刚开始没点头绪,曾在此论坛问了下思路,通过看书终于写出来了,自认为挺好,可是给老师看了只叫我运行下试试,然后说了些注意的地方,就这样O了,我觉得挺无语的,至少是自己写出来的,也得看看我的啊(自恋下,呵呵),隔了这么久突然就想让论坛大神看看还有什么需要改进注意的地方?我没写过什么程序,不懂规则,呵呵。
程序代码:
#include<stdio.h>
#include<stdlib.h>


typedef struct term
{
    int Coe;
    int  Epn;
    struct term *pnode;
}pol,*ppol;


/*.....................建立链表...............................................*/
ppol create(ppol phead)        //注意类型是数据结构型
{
    ppol ptemp,plast;


    ptemp=(ppol)malloc(sizeof(pol));
     scanf("%d%d",&ptemp->Coe,&ptemp->Epn);


    phead=plast=ptemp;     //保存头部phead  
    

    while(ptemp=(ppol)malloc(sizeof(pol)))
    {
        if(scanf("%d%d",&ptemp->Coe,&ptemp->Epn)!=2) break;
        plast->pnode=ptemp;  //让表尾节点链接新建节点
        plast=ptemp;        //表尾部指向新建的节点
    }   
    plast->pnode=NULL;
    free(ptemp);
    return phead;
}                
/*..........................冒泡排序次数相同相加系数...................................*/
void sort(ppol phead)
{
    ppol ptemp,prv,plink;
    int e,c;


    for (prv=phead;prv;prv=prv->pnode)
        for (plink=prv,ptemp=prv->pnode;ptemp;plink=ptemp,ptemp=ptemp->pnode)
        {
            if(ptemp->Epn>prv->Epn)
            {
                e=prv->Epn;
                prv->Epn=ptemp->Epn;
                ptemp->Epn=e;
                c=prv->Coe;
                prv->Coe=ptemp->Coe;
                ptemp->Coe=c;
            }
            if(ptemp->Epn==prv->Epn)
            {
                prv->Coe+=ptemp->Coe;
                plink->pnode=ptemp->pnode;
                ptemp=plink;
            }
        }
}  


/*.........................打印链表多项式......................................*/
void show(ppol p)
{
    while(p)
    {
        {
        if(p->Epn==1)
        {
            if(p->Coe==1)
                printf("x");
            else if(p->Coe==-1)
                printf("-x");
            else
                printf("%dx",p->Coe);
        }
        else if(p->Epn==0)
            printf("%d",p->Coe);
        else
        {
            if(p->Coe==1)
                printf("x^%d",p->Epn);
            else if(p->Coe==-1)
                printf("-x^%d",p->Epn);
            else
                printf("%dx^%d",p->Coe,p->Epn);
        }}
        if(p->pnode)
            if(p->pnode->Coe>0)
                putchar('+');
        p=p->pnode;
    }


    putchar(10);
}


/*.......................两个多项式相接......................................*/
ppol linkadd(ppol pA,ppol pB)
{
    ppol pAlast=pA;


    while(pAlast->pnode) pAlast=pAlast->pnode;
    pAlast->pnode=pB;
    return pA;
}
int main()
{
    ppol pA,pB;


    printf("请输入多项式p(A),形式为(系数 幂),并以标点或字母结束输入:\n");
    pA=create(pA);
    sort(pA);
    printf("多项式p(A)为:\n");
    show(pA);


    getchar();


    printf("请输入多项式p(B),形式为(系数 幂),并以标点或字母结束输入:\n");
    pB=create(pB);
    sort(pB);
    printf("多项式p(B)为:\n");
    show(pB); 


    pA=linkadd(pA,pB);
    sort(pA);
    printf("多项式p(B)、p(B)的和为:\n");
    show(pA);


    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 多项式 老师 
2012-12-01 12:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:21 
你没明白老师说你什么吧?为了算法和数据结构而编程,而不是根据实际问题编程!一个简单的矩阵加减法需求,你要用到链表,不叫你自己测试,难道他给你测试?

授人以渔,不授人以鱼。
2012-12-01 12:52
woxingx
Rank: 2
等 级:论坛游民
帖 子:46
专家分:68
注 册:2012-11-8
收藏
得分:8 
很好
2012-12-01 13:01
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
我懂了,不是问了解决问题而编,而是为了学习!!但先不谈这个因素,就谈谈这个程序。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2012-12-01 13:07
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:21 
运行结果出来了,还不错
[attach]66681[/attach]
看来你写这个也挺努力了,呵呵!老师的话你也就别管了,到时候他会给出作业题的结果的。
要得到你想要的结果,其实用很少的代码就能实现,你稍微想一下可能自己就能实现。
可能是老师看见你代码太长,吓到了也说不准。
程序问题嘛。。玩具程序,大部分输入对应的输出对了就算没问题
多项式嘛。。。
[attach]66682[/attach]
我只是想用这图说明什么是多项式。。。


[ 本帖最后由 cyhdahua 于 2012-12-1 14:54 编辑 ]

WE GO
2012-12-01 14:53
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
1.
图片附件: 游客没有浏览图片的权限,请 登录注册

2.
图片附件: 游客没有浏览图片的权限,请 登录注册

WE GO
2012-12-01 14:56
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
难得有好心人,呵呵,谢谢。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2012-12-01 23:25
快速回复:大家看看这个多项式有什么需要改进的?
数据加载中...
 
   



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

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