| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 978 人关注过本帖
标题:那个大神帮我改改,看看,如果改不了,麻烦给我一份,类似的,多项式的加减 ...
只看楼主 加入收藏
柏霖
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-6-28
结帖率:0
收藏
 问题点数:0 回复次数:0 
那个大神帮我改改,看看,如果改不了,麻烦给我一份,类似的,多项式的加减乘运算
#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
typedef struct Lnode
{
    float a;
    int e;
    struct Lnode*next;
}Lnode,*LinkList;
LinkList CreatList(int n)
{
    int i;
    LinkList l,s;
    l=(LinkList)malloc(sizeof(Lnode));
    l->next=NULL;
    for (i=0;i<n;i++)
        s=(LinkList )malloc(sizeof(Lnode));
    printf("输入第%d项的系数",n-1);
    scanf("%d",s->e);
    s->next=l->next;
    l->next=s;
printf("\n");
   return l;
   }
   void print(LinkList l)
   {LinkList p1,p2,w;
   int n=0;
   p1=l->next;
   float i;
   int j;
   while(p1->next)
   {i=p1->a;
   j=p1->e;
   p2=p1->next;
   while(p2)
   {if((p2->e)<j)
   {
       p1->a=p2->a;
       p1->e=p2->e;
       p2->a=i;
       p2->e=j;
       i=p1->a;
       j=p1->e;
   }
   p2=p2->next;
   }
   p1=p1->next;
   }
   printf("去掉系数位零项,合并同类项,升幂排序后\n");
   w=l->next;
   printf("一元多项式为,");
//printf("w-<<w->a<<"*x^"<<w->e\n");
       n++;
       w=w->next;
       while(w)
       {
           //printf("+"<<w->a<<"x^"<<w->e\n");
               w=w->next;
           n++;
       }
   }
   printf("\n");
   printf("多项式共%d项\n\n",n);
   }
   void Delete0(LinkList l)
   {
       LinkList q=l->next,p=l;
       while(p->next){
           q=p->next;
           if(q->a==0)
           {p->next=q->next;
               free(q);
               p=l;
           }
           p=p->next;
       }
   }
   void hebing(LinkList l)
   {
       LinkList p=l->next,q;
       q=p;
       int m;
       while(p)
       {
           m=p->e;
           q=p;
       while(q->next){
           if(q->next->e==m){
               p->a=q->next->a+p->a;
               q->next->a=0;
           }
           q=q->next;
       }
       p=p->next;
   }
   }
   LinkList plus(LinkList l1,LinkList l2);
   {LinkList p1=l1->next,p2=l2->next,p3,l3;
   l3=(LinkList)malloc(sizeof(Lnode));
   l3->next=NULL;
   while(p1){
       p3=(LinkList)malloc(sizeof(Lnode));
       p3->a=p1->a;
       p3->e=p1->e;
       p3->next=l3->next;
       l3->next=p3;
       p1=p1->next;
   }
   while(2)
   {
    p3=(LinkList)malloc(sizeof(Lnode));
    p3->a=p2->a;
    p3->e=p2->e;
    p3->next=l3->next;
    l3->next=p3;
    p2=p2->next;
   }
   hebing(l3);
   Delete0(l3);
   return l3;
   }
   LinkList multip(LinkList la,LinkList lb)
   {
       LinkList pb=lb->next,pc,lc,s;
       lc=(LinkList)malloc(sizeof(Lnode));
       s->next=NULL;
       while(pb)
       {float i=pb->a;
       int j=pb->e;
       LinkList pa=la->next;
       while(pa){
           pc(LinkList)malloc(sizeof(Lnode));
           pc->next=NULL;
           pc->a=(pa->a)*i;
           pc->e=pa->e+j;
           pc->next=lc->next;
           lc->next=pc;
           pa=pa->next;
       }
       s=plus(lc,s);
       pb=pb->next;
       }
       hebing(s);
       Delete0(s);
       return(s);
   }
#include"bbb.h"
void main()
{
    int m,n;
    char ch;
printf("***************一元多项式的运算********\n");
    printf("必须先执行1、2\n");
    printf("按任意键加回车开始,如果结束请输入#加回车\n");
    //cin>>ch;
    while(ch!='#'){
        printf("请选择,1、创建第一个多项式(2、第二个多项式(3、做加法(4、做乘法(#退出\n");
            //cin>>n;
        printf("系数必须为实数,指数必须为整数"\n\n");
        LinkList link1,link2,link3,link4;
            switch(n){
            case 1:{printf("输入第一个多项式的项数,至少为一项,\n");
                printf("至少为一项"\n");
                //cin>>m:
                   }
            case 2:{
                printf("输入第二个多项式的项数,\n");
                //cin>>m;
                while(m<=0){
                    printf("输入数据部合法,请重新输入\n");
                    //cin>>m;
                }
                link2=CreatList(m);
                hebing(link2);
                if(m>1)Delete0(link2);
                //print(link2);
                break;
                   }
            case 3:{
                link3=plus(link1,link2);
                //print(link3);
                break;}
            case 4:{
                link4=multip(link1,link2);
                //print(link4);
                break;}
            default:printf("输入不符合规则\n");
        }
        ch=getchar();
    }
搜索更多相关主题的帖子: include return 多项式 
2016-06-28 18:47
快速回复:那个大神帮我改改,看看,如果改不了,麻烦给我一份,类似的,多项式的 ...
数据加载中...
 
   



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

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