鱼C论坛

 找回密码
 立即注册
查看: 4562|回复: 21

有关一元多项式计算器的程序问题。大家帮忙修改一下哈!谢谢了!

[复制链接]
发表于 2013-6-26 17:05:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 第二个╮夏天 于 2013-6-26 17:11 编辑

//元素类型、结点类型和指针类型
//#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <math.h>
typedef int status;
typedef struct NodeType    //结点类型,指针类型
{
float coef;  //系数
int   expn;  //指数
    NodeType *next;
}*LinkType;        
typedef  LinkType  polynomail;  //用带头结点的有序链表表示多项式  
                                    
  
//函数声明
void InitPolyn( polynomail &P);                                  //构造一个多项式
status MakeNode( polynomail &p,float Ncoef,int Nexpn);          //创建一个结点
void CreatPolyn( polynomail &P,int m);                           //输入m项的系数和指数,建立表示一元多项式的有序链表P
void ClearPolyn( polynomail &P);                                 //将单链表清空,并释放原链表的结点空间
void DestroyPolyn( polynomail &P);                               //销毁一元多项式P
void PrintPolyn( polynomail P);                                  //打印输出一元多项式P
int  PolynLength( polynomail P);                                 //返回一元多项式P中的项数
void MergePolynCoef(polynomail &Pn);                             //在序链表中,合并同类项
void SortPolyn(polynomail &Pn);                                   //根据链表的expn指数域,对链表进行降序排序
void DelZeroNode(polynomail &Pn);                                //释放无用结点,即系数为0项
void AddPolyn( polynomail &Pa,polynomail &Pb,polynomail &Pc);      //完成多项式相加运算,即:Pc=Pa+Pb
void SubtractPolyn( polynomail Pa,polynomail Pb,polynomail &Pc); //完成多项式相减运算,即:Pc=Pa-Pb
void MultiplyPolyn( polynomail Pa,polynomail Pb,polynomail &Pc); //完成多项式相乘运算,即:Pc=Pa×Pb
void Difference( polynomail &pa);                                //求多项式的导函数
float Evaluate(polynomail pn, float x );                         //求多项式的值
//算法如下
//构造一个多项式
void InitPolyn( polynomail &P)
{  
P=(NodeType *)malloc(sizeof(NodeType));
    P->coef=0;
P->expn=0;
P->next=NULL; //初始化带头结点的单链表
}
//将单链表清空,并释放原链表的结点空间
void ClearPolyn( polynomail &P)
{
LinkType q;
q=P->next;
    while(q!=NULL) //释放原链表的结点空间
{
  P->next=q->next;
  free(q);
  q=P->next;
}
}
//销毁一元多项式P
void DestroyPolyn(polynomail &P)                           
{
LinkType q=P;
    while(q!=NULL)
{
  q=P->next;
  free(P);   //释放所有结点空间
  q=P;
}                        
} // DestroyPolyn
//根据链表的expn指数域,对链表进行降序排序
void SortPolyn(polynomail &Pn)                                
{
MergePolynCoef(Pn);      //先合并同类项
    LinkType p,q,r;
    q=Pn->next;
Pn->next=NULL;
  while(q!=NULL)         //插入法排序
  {  
   p=Pn;
  while(p->next!=NULL&&p->next->expn>q->expn)
   p=p->next;
  r=q->next;
  q->next=p->next;
  p->next=q;
  q=r;   
  }
}// SortPolyn
//在序链表中,合并同类项
void MergePolynCoef(polynomail &Pn)
{
LinkType p,p1,p2;
    p=Pn->next;
    while(p!=NULL)
{
   p1=p;p2=p->next;
         while(p2!=NULL)    //合并指数相同项
   {
   if(p->expn==p2->expn)
   {
    p->coef+=p2->coef;
    p1->next=p2->next;
    free(p2);  
          p2=p1->next;
   }
         else
   {
    p1=p2;
    p2=p1->next;
   }
   }
     p=p->next;
  }
DelZeroNode(Pn);   //删除合并后系数为0的结点
}
//创建一个结点
status MakeNode( polynomail &p,float Ncoef,int Nexpn)
{  
  if (!(p=(LinkType)malloc(sizeof(NodeType))))
   {
  printf("Error,the momery is overflow");
  return false;
   }
    p->coef=Ncoef;
p->expn=Nexpn;
p->next=NULL;
    return true;
}

//输入m项的系数和指数,建立表示一元多项式的有序链表P
void CreatPolyn( polynomail &P,int m)                  
{
float fcoef;
    int fexpn;
    NodeType *s,*q;
    q=P;
for(int i=1;i<=m;i++)    //if(m==0) 为"空表!";
   {
  printf("第i项式:");
     printf("系数,指数:");
  scanf("%d,%d",&fcoef,&fexpn);
     s=(NodeType *)malloc(sizeof(NodeType));
  s->coef=fcoef;
  s->expn=fexpn;
  s->next=NULL;
  q->next=s;
  q=s;
  q->next=NULL;
   }
MergePolynCoef(P);    //合并指数相同项
DelZeroNode(P);       //删除系数为0的结点
SortPolyn(P);        //按指数域,对链表进行升序排序
}
/*
// 稀疏多项式pa以链表作存储结构,将此链表修改成它的导函数,并释放无用结点
void Difference(polynomail &pa)                                                              
{  
LinkType p,q;
p=pa->next;
q=pa;
   while(p!=NULL)
   {
    if(p->expn==0)
    {
       q->next=p->next;
       free(p);
       p=q->next;
    }   //常数项,导数为零,释放结点
       else
    {
     p->coef=p->coef*p->expn; //系数=原系数* 指数
           (p->expn )--;            //指数减1
     q=q->next;
     p=p->next;     
    }
   }  
}
                                                          */

//释放无用结点,即系数为0项
void DelZeroNode(polynomail &Pn)                              
{
LinkType p,q;
p=Pn->next;
q=Pn;
while(p!=NULL)
{
  if(p->expn==0)
  {
   q->next=p->next;
   free(p);
   p=q->next;
  }   
}
}
//求多项式的值
float Evaluate(polynomail pn, float x)                        
{

LinkType p;
p=pn->next;  
    float result=0;
    while(p!=NULL)
{
  result+=(p->coef)*(float)pow(x,p->expn);  //pow函数求x的n次方
        p=p->next;
}
    return result;
}
//完成多项式相加运算,即:Pc=Pa+Pb
void AddPolyn(polynomail &Pa,polynomail &Pb,polynomail &Pc)   
{  
float x;
int m;
    //LinkType p,q,r;
NodeType *p,*q,*r;
    NodeType *s;
CreatPolyn(Pa,1);
    p=Pb->next;
    q=Pa->next;
    r=Pc;
  while(p!=NULL&&q!=NULL)
  {
   if(p->expn==q->expn) //指数相同
   {
    x=p->coef+q->coef ;
       if(x!=0)         //指数相同,若系数相加不等于0,插入表中
    {
     s=(NodeType *)malloc(sizeof(NodeType));
        s->coef=x;
     s->expn=q->expn;
     s->next=NULL;
              r->next=s;
     r=r->next;
    }
      p=p->next;
      q=q->next;
   }
   else if(q->expn<p->expn)  //指数小的插入表中
   {
  s=(NodeType *)malloc(sizeof(NodeType));
  s->coef=q->coef;
  s->expn=q->expn;
  s->next=NULL;
        r->next=s;r=r->next;
     q=q->next;
   }
     else
  {
    s=(NodeType *)malloc(sizeof(NodeType));
    s->coef=p->coef;
    s->expn=p->expn;
    s->next=NULL;
          r->next=s;
    r=r->next;
    p=p->next;
  }
  }
//加入余下的多项式
while(p!=NULL)
  {
  s=(NodeType *)malloc(sizeof(NodeType));
     s->coef=p->coef;
  s->expn=p->expn;
  s->next=NULL;
     r->next=s;
  r=r->next;
  p=p->next;
  }
while(q!=NULL)
{
  s=(NodeType *)malloc(sizeof(NodeType));
     s->coef=q->coef;
  s->expn=q->expn;
  s->next=NULL;
     r->next=s;
  r=r->next;
  q=q->next;
}
}// AddPoly
//完成多项式相减运算,即:Pc=Pa-Pb   
void SubtractPolyn( polynomail Pa,polynomail Pb,polynomail &Pc)      
{
float x;
    LinkType p,q,r;
    NodeType *s;
    p=Pa->next;
    q=Pb->next;
    r=Pc;
while(p!=NULL&&q!=NULL)
  {  
  if(p->expn==q->expn)    //指数相同
  {
   x=p->coef-q->coef;
      if(x!=0)       //指数相同,若系数相减不等于0,插入表中
   {
    s=(NodeType *)malloc(sizeof(NodeType));
       s->coef=x;
    s->expn=q->expn;
    s->next=NULL;
             r->next=s;
    r=r->next;
   }
     p=p->next;
  q=q->next;
  }
  else if(q->expn<p->expn)   //指数小的插入表中
  {   
   s=(NodeType *)malloc(sizeof(NodeType));
   s->coef=-q->coef;    //减数的系数变为相反数
   s->expn=q->expn;
   s->next=NULL;
         r->next=s;
   r=r->next;
   q=q->next;
  }
     else  
  {  
   s=(NodeType *)malloc(sizeof(NodeType));
   s->coef=p->coef;
   s->expn=p->expn;
   s->next=NULL;
         r->next=s;
   r=r->next;
   p=p->next;
  }
}
//加入余下的多项式,减数的系数变为相反数
  while(p!=NULL)
  {
   s=(NodeType *)malloc(sizeof(NodeType));
   s->coef=p->coef;
   s->expn=p->expn;
   s->next=NULL;
      r->next=s;
   r=r->next;
   p=p->next;
  }
   while(q!=NULL)
   {
    s=(NodeType *)malloc(sizeof(NodeType));
       s->coef=-q->coef;
    s->expn=q->expn;
    s->next=NULL;
       r->next=s;
    r=r->next;
    q=q->next;
   }
}// SubtractPolyn
//完成多项式相乘运算,即:Pc=Pa×Pb
void MultiplyPolyn( polynomail Pa,polynomail Pb,polynomail &Pc)  
{  

LinkType p,q,r;
    NodeType *s;
p=Pa->next;
r=Pc;
while(p!=NULL)
{
  q=Pb->next;
        while(q!=NULL)
  {
   s=(NodeType *)malloc(sizeof(NodeType));
         s->coef=p->coef*q->coef;
         s->expn=p->expn+q->expn;
            s->next=NULL;      
            r->next=s;
         r=r->next;
         q=q->next;
  }
    p=p->next;
   }
MergePolynCoef(Pc);  //合并指数相同项
DelZeroNode(Pc);     //删除系数为0的结点
SortPolyn(Pc);      //按指数域,对链表进行升序排序
}// MultiplyPolyn
//主函数
void main()
{
    polynomail Pa,Pb,Pc;
float x;
printf("        **********************************************************\n");
printf("        ****************欢迎使用一元多项式计算器******************\n");
printf("        **********************************************************\n");
    loop:while(1)
{   
      
       int choice;
    printf("        **********************************************************\n");
    printf("        *******************   1.多项式加法       *****************\n");
    printf("        *******************   2.多项式减法       *****************\n");
    printf("        *******************   3.多项式乘法       *****************\n");
    printf("        *******************   4.求多项式A的导数  *****************\n");
    printf("        *******************   5.求多项式A的值    *****************\n");
    printf("        *******************   6.谢谢使用!再见!   *****************\n");
    printf("        **********************************************************\n");
    printf("测试数据: A1=x+x^2+x^3                        B1=1+x+x^2 \n");
    printf("          A2=9+x+x^4+2x^6                     B2=6x^(-3)-x+4.4x^2-1.2x^9 \n");
    printf("          A3=-6x^(-3)+5.4x^2-x^2+7.8x^10      B3=7-5x^8+11x^9 \n\n");
       printf("请输入操作(1-6):\n");
       scanf("%d",&choice);
    printf("\n");
       switch(choice)
    {  
          case 1:
     {
           printf("多项式加法C=A+B\n");  
           AddPolyn(Pa,Pb,Pc);  
     }
     /*  case 2:
           printf("多项式减法C=A-B:\n");
        SubtractPolyn(Pa,Pb,Pc);   
       case 3:
           printf("多项式乘法C=A*B:\n");
        MultiplyPolyn(Pa,Pb,Pc);   
       case 4:
        printf("求多项式A的导数:\n");
        Difference(Pa);                 
    case 5:
              printf("求多项式A的值:\n");
                 Evaluate(Pa, x);                */
       case 6:
           printf("谢谢使用!再见!\n");
           return ;
          default:
           printf("错误命令!\n");  
          getchar();
       goto loop;  
    }
};
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-26 22:05:15 | 显示全部楼层
本帖最后由 故乡的风 于 2013-6-27 09:32 编辑

修改的你的代码,有些你的可能是对的,但是我开始没搞清楚,就改了。整体来说的,你的算法没问题,可能有些小问题,我大体改过来了。而且,我也测试了一组数据,没有问题。你自己测测看看。
//元素类型、结点类型和指针类型
//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <MATH.H>

typedef int status;
typedef struct NodeType    //结点类型,指针类型
{
        float coef;  //系数
        int   expn;  //指数
    NodeType *next;
}*LinkType;
typedef  LinkType  Polynomial;  //用带头结点的有序链表表示多项式

//函数声明
void InitPolyn( Polynomial &P);                                  //构造一个多项式
status MakeNode( Polynomial &p,float Ncoef,int Nexpn);           //创建一个结点
void CreatPolyn( Polynomial &P,int m);                           //输入m项的系数和指数,建立表示一元多项式的有序链表P
void ClearPolyn( Polynomial &P);                                 //将单链表清空,并释放原链表的结点空间
void DestroyPolyn( Polynomial &P);                               //销毁一元多项式P
void PrintPolyn( Polynomial P);                                  //打印输出一元多项式P
int  PolynLength( Polynomial P);                                 //返回一元多项式P中的项数
void MergePolynCoef(Polynomial &Pn);                             //在序链表中,合并同类项
void SortPolyn(Polynomial &Pn);                                  //根据链表的expn指数域,对链表进行降序排序
void DelZeroNode(Polynomial &Pn);                                //释放无用结点,即系数为0项
void AddPolyn( Polynomial Pa,Polynomial Pb,Polynomial &Pc);      //完成多项式相加运算,即:Pc=Pa+Pb
void SubtractPolyn( Polynomial Pa,Polynomial Pb,Polynomial &Pc); //完成多项式相减运算,即:Pc=Pa-Pb
void MultiplyPolyn( Polynomial Pa,Polynomial Pb,Polynomial &Pc); //完成多项式相乘运算,即:Pc=Pa×Pb
void Difference(Polynomial Pa, Polynomial &Pb);                  //求多项式的导函数
float Evaluate(Polynomial pn, float x );                         //求多项式的值

//算法如下

//构造一个多项式
void InitPolyn( Polynomial &P)
{
        P=(NodeType *)malloc(sizeof(NodeType));
    P->coef=0;
        P->expn=0;
        P->next=NULL; //初始化带头结点的单链表
}

//将单链表清空,并释放原链表的结点空间
void ClearPolyn( Polynomial &P)
{
        LinkType p1, p2;
        p1 = P;
        p2 = p1->next;
    while(p2!=NULL) //释放原链表的结点空间
        {
                p1->next=p2->next;
                free(p2);
                p2=p1->next;
        }
}

 //销毁一元多项式P
void DestroyPolyn(Polynomial &P)
{
        LinkType q=P;
    while(q!=NULL)
        {
                q=P->next;
                free(P);   //释放所有结点空间
                q=P;
        }
} // DestroyPolyn

 //根据链表的expn指数域,对链表进行降序排序
void SortPolyn(Polynomial &Pn)
{
        MergePolynCoef(Pn);      //先合并同类项
    LinkType p,q,r;
    q=Pn->next;
        Pn->next=NULL;
  while(q!=NULL)         //插入法排序
  {
          p=Pn;
         while(p->next!=NULL&&p->next->expn > q->expn)
                 p=p->next;
         r=q->next;
         q->next=p->next;
         p->next=q;
         q=r;
  }
}// SortPolyn

//在序链表中,合并同类项
void MergePolynCoef(Polynomial &Pn)
{
        LinkType p,p1,p2;
    p=Pn->next;
    while(p!=NULL)
        {
                 p1=p;p2=p->next;
         while(p2!=NULL)    //合并指数相同项
                 {
                        if(p->expn==p2->expn)
                        {
                                p->coef+=p2->coef;
                                p1->next=p2->next;
                                free(p2);
                        p2=p1->next;
                        }
                else
                        {
                                p1=p2;
                                p2=p1->next;
                        }
                 }
            p=p->next;
  }
DelZeroNode(Pn);   //删除合并后系数为0的结点
}

//创建一个结点
status MakeNode( Polynomial &p,float Ncoef,int Nexpn)
{
  if (!(p=(LinkType)malloc(sizeof(NodeType))))
   {
                printf("Error,the momery is overflow");
                return false;
   }
    p->coef=Ncoef;
        p->expn=Nexpn;
        p->next=NULL;
    return true;
}


//输入m项的系数和指数,建立表示一元多项式的有序链表P
void CreatPolyn(Polynomial &P,int m)
{
        float fcoef;
    int fexpn;
    NodeType *s,*q;
    q=P;
    printf("项数:%d\n", m);
 for(int i=1;i<=m;i++)    //if(m==0) 为"空表!";
   {
         printf("第%d项式:", i);
     printf("系数,指数:");
         scanf("%f %d",&fcoef, &fexpn);
     s=(NodeType *)malloc(sizeof(NodeType));
         s->coef=fcoef;
         s->expn=fexpn;
         s->next=NULL;
         q->next=s;
         q=s;
   }

 MergePolynCoef(P);    //合并指数相同项
// DelZeroNode(P);       //删除系数为0的结点
 SortPolyn(P);        //按指数域,对链表进行升序排序
}

// 稀疏多项式pa以链表作存储结构,将此链表修改成它的导函数,并释放无用结点
void Difference(Polynomial Pa, Polynomial &Pb)
{
        LinkType p,q;
        NodeType *s;
        p=Pa->next;
        q=Pb;
   while(p!=NULL)
   {
           if(p->expn==0)
           {
              p=p->next;
           }   //常数项,导数为零,释放结点
       else
           {
                   s = (NodeType *)malloc(sizeof(NodeType));
                   s->coef = p->coef * p->expn;
                   s->expn = p->expn - 1;
                   s->next = NULL;

                   p = p->next;
                   q->next = s;
                   q = q->next;
           }
   }
}

//释放无用结点,即系数为0项
void DelZeroNode(Polynomial &Pn)
{
        LinkType p,q;
        q=Pn;
        p = q->next;
        while(p!=NULL)
        {
                if(p->coef==0)
                {
                        q->next=p->next;
                        free(p);
                        p=q->next;
                }
                q = p;
                p = q->next;
        }
}

//求多项式的值
float Evaluate(Polynomial pn, float x)
{

        LinkType p;
        p=pn->next;
    float result=0;
    while(p!=NULL)
        {
                result+=(p->coef)*(float)pow(x,p->expn);  //pow函数求x的n次方
        p=p->next;
        }
    return result;
}

//完成多项式相加运算,即:Pc=Pa+Pb
void AddPolyn(Polynomial Pa,Polynomial Pb,Polynomial &Pc)
{
        float x;
    //LinkType p,q,r;
        NodeType *p,*q,*r;
    NodeType *s;
    p=Pa->next;
    q=Pb->next;
    r=Pc;
  while(p!=NULL&&q!=NULL)
  {
          if(p->expn==q->expn) //指数相同
          {
                  x=p->coef+q->coef ;
              if(x!=0)         //指数相同,若系数相加不等于0,插入表中
                  {
                          s=(NodeType *)malloc(sizeof(NodeType));
                      s->coef=x;
                          s->expn=q->expn;
                          s->next=NULL;
              r->next=s;
                          r=r->next;
                  }
             p=p->next;
             q=q->next;
          }
          else if(q->expn > p->expn)  //指数大的插入表中
          {
                s=(NodeType *)malloc(sizeof(NodeType));
                s->coef=q->coef;
                s->expn=q->expn;
                s->next=NULL;
        r->next=s;r=r->next;
            q=q->next;
          }
     else
         {
                  s=(NodeType *)malloc(sizeof(NodeType));
                  s->coef=p->coef;
                  s->expn=p->expn;
                  s->next=NULL;
          r->next=s;
                  r=r->next;
                  p=p->next;
         }
  }
//加入余下的多项式
 while(p!=NULL)
  {
         s=(NodeType *)malloc(sizeof(NodeType));
            s->coef=p->coef;
         s->expn=p->expn;
         s->next=NULL;
     r->next=s;
         r=r->next;
         p=p->next;
  }
 while(q!=NULL)
 {
         s=(NodeType *)malloc(sizeof(NodeType));
     s->coef=q->coef;
         s->expn=q->expn;
         s->next=NULL;
     r->next=s;
         r=r->next;
         q=q->next;
 }
}// AddPoly

//完成多项式相减运算,即:Pc=Pa-Pb
void SubtractPolyn( Polynomial Pa,Polynomial Pb,Polynomial &Pc)
{
        float x;
    LinkType p,q,r;
    NodeType *s;
    p=Pa->next;
    q=Pb->next;
    r=Pc;
 while(p!=NULL&&q!=NULL)
  {
         if(p->expn==q->expn)    //指数相同
         {
                 x=p->coef-q->coef;
             if(x!=0)       //指数相同,若系数相减不等于0,插入表中
                 {
                         s=(NodeType *)malloc(sizeof(NodeType));
                     s->coef=x;
                         s->expn=q->expn;
                         s->next=NULL;
             r->next=s;
                         r=r->next;
                 }
            p=p->next;
                q=q->next;
         }
         else if(q->expn > p->expn)   //指数大的插入表中
         {
                 s=(NodeType *)malloc(sizeof(NodeType));
                 s->coef=-q->coef;    //减数的系数变为相反数
                 s->expn=q->expn;
                 s->next=NULL;
         r->next=s;
                 r=r->next;
                 q=q->next;
         }
     else
         {
                 s=(NodeType *)malloc(sizeof(NodeType));
                 s->coef=p->coef;
                 s->expn=p->expn;
                 s->next=NULL;
         r->next=s;
                 r=r->next;
                 p=p->next;
         }
 }
//加入余下的多项式,减数的系数变为相反数
  while(p!=NULL)
  {
          s=(NodeType *)malloc(sizeof(NodeType));
          s->coef=p->coef;
          s->expn=p->expn;
          s->next=NULL;
      r->next=s;
          r=r->next;
          p=p->next;
  }
   while(q!=NULL)
   {
           s=(NodeType *)malloc(sizeof(NodeType));
       s->coef=-q->coef;
           s->expn=q->expn;
           s->next=NULL;
       r->next=s;
           r=r->next;
           q=q->next;
   }
}// SubtractPolyn

//完成多项式相乘运算,即:Pc=Pa×Pb
void MultiplyPolyn( Polynomial Pa,Polynomial Pb,Polynomial &Pc)
{

        LinkType p,q,r;
    NodeType *s;
        p=Pa->next;
        r=Pc;
        while(p!=NULL)
        {
                q=Pb->next;
        while(q!=NULL)
                {
                        s=(NodeType *)malloc(sizeof(NodeType));
                s->coef=p->coef*q->coef;
                s->expn=p->expn+q->expn;
            s->next=NULL;
            r->next=s;
                r=r->next;
                q=q->next;
                }
           p=p->next;
   }
   MergePolynCoef(Pc);  //合并指数相同项
   DelZeroNode(Pc);     //删除系数为0的结点
   SortPolyn(Pc);      //按指数域,对链表进行降序排序
}// MultiplyPolyn

void PrintPolyn(Polynomial P) {
    Polynomial pCur;
    pCur = P->next;
    while (pCur) {
        printf("%.0fX^%d  ", pCur->coef, pCur->expn);
        pCur = pCur->next;
    }
    printf("\n");
}


//主函数
int main()
{
    Polynomial Pa,Pb,Pc;
        float x = 2;

        InitPolyn(Pa);
        CreatPolyn(Pa, 3);
        PrintPolyn(Pa);
        InitPolyn(Pb);
        CreatPolyn(Pb, 2);
        PrintPolyn(Pb);
        InitPolyn(Pc);

        printf("        ****************欢迎使用一元多项式计算器******************\n");
        printf("        **********************************************************\n");
    while(1)
        {

       int choice;
           printf("        **********************************************************\n");
           printf("        *******************   1.多项式加法       *****************\n");
           printf("        *******************   2.多项式减法       *****************\n");
           printf("        *******************   3.多项式乘法       *****************\n");
           printf("        *******************   4.求多项式A的导数  *****************\n");
           printf("        *******************   5.求多项式A的值    *****************\n");
           printf("        *******************   6.谢谢使用!再见!   *****************\n");
           printf("        **********************************************************\n");
           printf("测试数据: A1=x+x^2+x^3                        B1=1+x+x^2 \n");
           printf("          A2=9+x+x^4+2x^6                     B2=6x^(-3)-x+4.4x^2-1.2x^9 \n");
           printf("          A3=-6x^(-3)+5.4x^2-x^2+7.8x^10      B3=7-5x^8+11x^9 \n\n");
       printf("请输入操作(1-6):\n");
       scanf("%d",&choice);
           printf("\n");
           getchar();

       switch(choice)
           {
          case 1:
                          {
                         printf("多项式加法C=A+B\n");
                         AddPolyn(Pa,Pb,Pc);
                         PrintPolyn(Pc);
                         ClearPolyn(Pc);
                          }
                          break;

              case 2:
                  {
                         printf("多项式减法C=A-B:\n");
                             SubtractPolyn(Pa,Pb,Pc);
                             PrintPolyn(Pc);
                             ClearPolyn(Pc);
                  }
                  break;

              case 3:
                  {
                         printf("多项式乘法C=A*B:\n");
                             MultiplyPolyn(Pa,Pb,Pc);
                             PrintPolyn(Pc);
                             ClearPolyn(Pc);
                  }
                          break;

              case 4:
                  {
                             printf("求多项式A的导数:\n");
                             Difference(Pa, Pc);
                             PrintPolyn(Pc);
                             ClearPolyn(Pc);
                  }
                  break;

                  case 5:
                      {
                     printf("求多项式A的值:\n");
                     x = 2;
                 float value = Evaluate(Pa, x);
                 printf("%f\n", value);
                      }
              break;
              case 6:
                  {
                         printf("谢谢使用!再见!\n");
                         exit(0);
                  }
                  break;

          default:
              {
                         printf("错误命令!\n");
              }
              break;
           }
        };

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-6-26 22:23:22 | 显示全部楼层

嗯嗯。一开始出现的问题都解决了,不会再一执行就报错了。亲,谢谢哈!辛苦了!:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-9 03:17:54 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 回推 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-10 09:04:56 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 鞠金桓1999 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-10 12:05:29 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 回推 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-15 12:45:54 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 柳荣1 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-15 16:03:50 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 回推 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-22 23:43:48 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 傻乎乎宏逸 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-22 23:43:48 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 傻乎乎宏逸 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-23 12:36:19 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 出世秀雅 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-23 12:36:19 | 显示全部楼层
转发微博


                               
登录/注册后可看大图
来自 公寓草间野分 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-14 21:59:34 | 显示全部楼层
这么长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表