| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 468 人关注过本帖
标题:一元多项式加法运算问题运行无法实现一般情况(即任意输入项式的指数或系数 ...
取消只看楼主 加入收藏
美珊
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-10-4
结帖率:60%
  问题点数:0  回复次数:0   
一元多项式加法运算问题运行无法实现一般情况(即任意输入项式的指数或系数值)输出,如何解决?
一元多项式加法运算问题运行无法实现一般情况(即任意输入项式的指数或系数值)输出,如何解决?
各位大神,求帮忙,我在解决一元多项式的过程中,无法实现一般化数据输入。
问题在于:如果我第一个和第二个项式均为F(x)=2x的平方+3x的三次方,那么就一元多项式的加法出错了,可是如果第一个项式为F(x)=2x的平方+3x的三次方,而第二个项式为F(x)=2x的平方+4x的四次方,那么一元多项式的加法就没有错误。
#include <iostream.h>

typedef struct
{
    int xi;//系数
    int zhi;//指数
}ElemType;

typedef struct LNode
{
    ElemType data; //结点的数据部分
    struct LNode *next;
} LinkList;

//初始化链表
void InitList(LinkList *&L)
{
    L=new LinkList;
    L->next=NULL;
}



//插入一个数据结点e到有序链表中
void InsertList(LinkList *&L,ElemType e)
{
    LinkList *r,*s;//r是循环用的结点指针,s是插入的新结点
    r=L;
    //寻找新插入结点的位置
    while(r->next!=NULL&&e.zhi>r->next->data.zhi)
        r=r->next;

    s=new LinkList;
    s->data.xi=e.xi;    s->data.zhi=e.zhi;
    //将e的值赋给s指针所指结点
    s->next=r->next;
    r->next=s;
}

//两个多项式相加
void AddList(LinkList *&L,LinkList *Lc)
{
    LinkList *r,*s;   
    ElemType p;
    r=L;
    s=Lc;

    if(r->next!=NULL && s->next!=NULL)
    {   
        while(s->next->data.zhi==r->next->data.zhi)
        {
            r->next->data.xi=s->next->data.xi+r->next->data.xi;
            s=s->next;
        }
   
        p.xi=s->next->data.xi;   
        p.zhi=s->next->data.zhi;
        InsertList(L,p);
        r=r->next;
    }

}


//遍历线性表
void DispList(LinkList *L)
{
    LinkList *p=L->next;
    cout<<"F(X)=";
    while(p)
    {
        cout<<p->data.xi<<"X^"<<p->data.zhi;
        if(p->next!=NULL&&p->next->data.xi>0)
            cout<<"+";
        p=p->next;   
    }
    cout<<endl;
}



//主程序部分
void main()
{
    LinkList *La,*Lc;
    InitList(La);
    InitList(Lc);
    int i=0;ElemType k,f;

    cout<<"输入第一个一元多项式:"<<endl;
    do
    {        
        cout<<"请输入第"<<i+1<<"项的系数:";
        cin>>k.xi;
        cout<<"请输入第"<<i+1<<"项的指数:";
        cin>>k.zhi;
        i++;
        cout<<endl;
        if(k.xi!=0 && k.zhi!=0)
            InsertList(La,k);
    }while(k.xi!=0 && k.zhi!=0);

    cout<<"输入第二个一元多项式:"<<endl;
    i=0;
    do
    {   
        cout<<"请输入第"<<i+1<<"项的系数:";
        cin>>f.xi;
        cout<<"请输入第"<<i+1<<"项的指数:";
        cin>>f.zhi;
        i++;
        cout<<endl;
        if(f.xi!=0 && f.zhi!=0)
            InsertList(Lc,f);
    }while(f.xi!=0 && f.zhi!=0);

    AddList(La,Lc);
    DispList(La);


}
搜索更多相关主题的帖子: include 多项式 如何 
2013-10-08 09:41
快速回复:一元多项式加法运算问题运行无法实现一般情况(即任意输入项式的指数或 ...
数据加载中...
 
   



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

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