首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

《两个多项式相加》出了点有关问题,帮忙查错。

2012-03-21 
高手请进《两个多项式相加》出了点问题,帮忙查错。。#include stdio.h#include malloc.hstructnum{intiin

高手请进《两个多项式相加》出了点问题,帮忙查错。。
#include <stdio.h>
#include <malloc.h>
struct   num
{
int   i;
int   j;
struct   num   *next;
};
void   main()
{
char   a[20],b[20];
int   sum(int   y[],int   k);
int   c[6],s;
struct   num   *p1,*p2,*p3,s1,s2,s3,*q1,*q2,*q3,*g1,*g2,*g3,*s4;
p1=&s1;
        p2=&s2;
p3=&s3;
p1-> next=NULL;
p2-> next=NULL;
p3-> next=NULL;
g1=p1;
g2=p2;
g3=p3;
gets(a);
gets(b);
int   i=0,k=0,flag=0;
      while(a[i]!= '\0 ')
      {
      if(a[i]> =48&&a[i] <=57)
      {
      c[k]=a[i]-48;
      k++;
      }
    if((a[i] <48||a[i]> 57)&&k!=0)
      {
    if(flag%2==0)
    {
      p1-> j=sum(c,k);
      k=0;
    }
    else
    {
    p1-> i=sum(c,k);
    k=0;
    q1=(struct   num*)malloc(sizeof(struct   num));
                    q1-> next=NULL;
                    p1-> next=q1;
                    p1=q1;
    }
      flag++;
      }
     
      i++;
      }
      flag=0;
      i=0;
      k=0;
            while(b[i]!= '\0 ')
      {
      if(b[i]> =48&&b[i] <=57)
      {
      c[k]=b[i]-48;
      k++;
      }
    if((b[i] <48||b[i]> 57)&&k!=0)
      {
    if(flag%2==0)
    {
      p2-> j=sum(c,k);
      k=0;
    }
    else
    {
p2-> i=sum(c,k);
k=0;
      q2=(struct   num*)malloc(sizeof(struct   num));
      q2-> next=NULL;
      p2-> next=q2;
      p2=q2;
    }
      flag++;
      }
      i++;
    }    
    for(p1=g1;p1-> next!=NULL;p1=p1-> next)
    {
                  s=p1-> i;
for(p2=g2;p2-> next!=NULL;p2=p2-> next)
{

if(p1-> i==p2-> i)
{
p3-> j=p1-> j+p2-> j;
p3-> i=p1-> i;
p1-> i=0;
q3=(struct   num*)malloc(sizeof(struct   num));
q3-> next=NULL;
p3-> next=q3;
p3=q3;
}

}
if(p1-> i==s)
{
p3-> j=p1-> j;
p3-> i=p1-> i;
q3=(struct   num*)malloc(sizeof(struct   num));


q3-> next=NULL;
p3-> next=q3;
p3=q3;
}
    }


p3=g3;
      while(p3-> next!=NULL)
      {
      printf( "%dx%d ",p3-> j,p3-> i);
      p3=p3-> next;
      }
}


int   sum(int   y[],int   k)
{
int   i,j,sum1=0;
for(i=0;i <k;i++)
for(j=i;j <k;j++)
{
y[i]=y[i]*10;
}
for(i=0;i <k;i++)
sum1=sum1+y[i]/10;
return   (sum1);
}


做出来结果少了一项   不知道哪错了。。我编的是以aX^b这样固定的形式写的
希望高手帮我找出错误。。谢谢。。。。新手多多关照。。。
更希望高手提出更优的算法。。在此   不胜感激。。

[解决办法]
多项式相加不如使用valarray,简单方便。

热点排行
Bad Request.