| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2660 人关注过本帖
标题:一元多项式相加相减相乘的C++程序,帮我看看好吗?
只看楼主 加入收藏
小小
Rank: 1
等 级:新手上路
威 望:1
帖 子:219
专家分:0
注 册:2004-5-31
收藏
 问题点数:0 回复次数:1 
一元多项式相加相减相乘的C++程序,帮我看看好吗?
这个程序 只写好了 相加部分,运行后 出现了第一项丢失?
是不是指针没处理好?

相减还没写出来\相乘我写不来,可以不可以帮我一下?
搜索更多相关主题的帖子: 多项式 相乘 相加 
2004-12-12 10:26
小小
Rank: 1
等 级:新手上路
威 望:1
帖 子:219
专家分:0
注 册:2004-5-31
收藏
得分:0 
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int datatype;

typedef struct node
{
        float coef;   /*多项式系数*/
    int expn;     /*多项式指数*/
    struct node *next;
}listnode;

typedef listnode *linklist;

/*---------创建带头结点的多项式链表--------*/
linklist creat()
{ linklist head,s,p,pre;
  float coef;
  int expn;
  head=(linklist)malloc(sizeof(listnode));   /*表头结点*/
  head->next=NULL;
  cout<<"输入系数:";
  cin>>coef;
  cout<<endl<<"输入指数:";
  cin>>expn;
  while (coef!=0)            
  {   cout<<"用系数=0作为结束标记!"<<endl;
          s=(linklist)malloc(sizeof(listnode));    /*生成新结点*/
      
          s->coef=coef;
      s->expn=expn;
      s->next=NULL;
      pre=head;                 /*插入到有序的多项式链表中去*/
      p=head->next;
      while (p && p->expn <expn)
          { pre=p;
        p=p->next;
          }
      s->next=p;
      pre->next=s;
       cout<<"读下一项:";
          cout<<endl<<"输入系数:";
           cin>>coef;        
      cout<<endl<<"输入指数:";
           cin>>expn;
  }
return head;
}
/*-----------输出多项式链表-------------*/
void print(linklist head)   
  { linklist p;
    p=head->next;
    while (p)
    {   
         cout<<p->coef<<"X^"<<p->expn<<"+";
       p=p->next;
           
     }
    cout<<endl;
}

/*-------------多项式相加----------------*/
linklist add(linklist pa,linklist pb)
{
        linklist p,q,pre,r,head;
        float x;
        
        p=head=pa->next;    //p,q 指向头接点的下一个接点,即多项式的第一个接点
        q=pb->next;
        pre=pa;       //pre指向p的前驱

        while((p!=NULL)&&(q!=NULL))  //处理多项式的相加的问题
                if(p->expn<q->expn)         
                {
                        pre=p;
                        p=p->next;
                }
                else if (p->expn==q->expn)
                {
                        x=p->coef+q->coef;
                        if(x!=0)  //系数相加不为0的情况
                        {
                                p->coef=x;
                                pre=p;
                                p=p->next;
                        }
                        else   //系数相加为0的情况
                        {
                                pre->next=p->next;
                                free(p);
                                p=pre->next;
                        }
                        
                        r=q;
                        q=q->next;
                        free(r);
                }
                else               
                {
                        r=q->next;
                        q->next=p;
                        pre->next=q;
                        pre=q;
                        q=r;
                }
                if(q!=NULL)
                        pre->next=q;
                return head;
                free(pb);
}


/*----主程序------*/
void main()
{
        cout<<"*****************一元多项式相加******************"<<endl;
        cout<<"        !!!!2x^3表示 2乘以x的三次方~!!!!"<<endl;
        cout<<"**************************************************"<<endl;
        linklist a,b,c;
   cout<<"请输入第一个多项式:"<<endl;
   a=creat();                      /*创建多项式链表a*/
      cout<<endl;
   
   
   cout<<"请输入第二个多项式:"<<endl;
   b=creat();                     /*创建多项式链表b*/
   cout<<endl;
   cout<<"您输入的第一个多项式为:"<<endl;
   print(a);
   
   cout<<"您输入的第二个多项式为:"<<endl;
   print(b);
   cout<<endl;
   
   
   cout<<"两多项式相加后为:"<<endl;
  
   c=add(a,b);                    /* 计算多项式a+b  */
   print(c);
   
  
   cout<<"程序运行完啦,不过有发现问题了吗?第一项丢了-_-!"<<endl;

}

有一天咖啡的舞者 £
2004-12-12 10:27
快速回复:一元多项式相加相减相乘的C++程序,帮我看看好吗?
数据加载中...
 
   



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

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