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

大家帮小弟我看一下这个程序的有关问题(函数无法被执行)在哪

2012-04-08 
大家帮我看一下这个程序的问题(函数无法被执行)在哪?//实现两个多项式(每项用一个链表结点表示)的相乘#inc

大家帮我看一下这个程序的问题(函数无法被执行)在哪?
//实现两个多项式(每项用一个链表结点表示)的相乘
#include <iostream>
using   namespace   std;
struct   SLink                                                             //定义链表结点类型
{
float   ceof;                                                       //浮点类型的系数
int   exp;                                                             //整型的指数
SLink   *next;
};
SLink   *create(SLink   *L);                                     //创建多项式的函数声明
void   add(SLink   *La,SLink   *Lb);                         //两个多项式相加的函数声明
void   print(SLink   *L)                                             //输出多项式的函数
{
SLink   *p;
p=L-> next;
while(!p)
{
if(p-> exp==0)   cout < <p-> ceof;
else   cout < <p-> ceof < < "x^ " < <p-> exp;
if(!p-> next)   cout < < "+ ";
p=p-> next;
}
cout < <endl;
}

int   compare(int   a,int   b)                                     //比较两个数的大小的函数
{
if(a==b)   return   0;
else   if(a> b)   return   -1;
else   if(a <b)   return   1;
}

void   main()                                                               //主函数
{
SLink   *pa,   *pb,   *p,   *q;
pa=pb=p=q=NULL;
cout < < "请依次输第一个多项式各项的系数和指数,以同时为0结束 " < <endl;
SLink   *La=new   SLink;   La=create(La);
cout < < "第一个多项式为: ";   print(La);
        cout < < "请依次输第二个多项式各项的系数和指数,以同时为0结束 " < <endl;
SLink   *Lb=new   SLink;   Lb=create(Lb);
cout < < "第二个多项式为: ";   print(Lb);
pa=La-> next;   pb=Lb-> next;
        int   i=0;  
SLink   *Lc=new   SLink;   Lc-> next=NULL;
SLink   *Ld=new   SLink;   Ld-> next=NULL;
q=Lc;
while(!pb)
{
pa=La-> next;
while(!pa)
{
if(i> =1)   q=Ld;
p=new   SLink;   p-> next=NULL;
p-> ceof=pa-> ceof*pb-> ceof;
                                                        p-> exp=pa-> exp+pb-> exp;
q-> next=p;q=p;
pa=pa-> next;
}
pb=pb-> next;
i++;
if(i> =2)   add(Lc,Ld);
}
//print(La);


//print(Lb);
print(Lc);
delete   Ld;
}

SLink   *create(SLink   *L)                   //create函数实现                
{
SLink   *p,   *q;
//L=new   SLink;
//L=new   SLink;
L-> next=NULL;//L-> ceof=0.0;L-> exp=0;
                  p=q=new   SLink;
cin> > p-> ceof;
cin> > p-> exp;
p-> next=NULL;
while(p-> ceof!=0||p-> exp!=0)
{
if(L-> next==NULL)   L-> next=p;
else   q-> next=p;q=p;
p=new   SLink;p-> next=NULL;
cin> > p-> ceof;
cin> > p-> exp;
}
q-> next=NULL;
delete   p;
        return   L;
}

void   add(SLink   *La,SLink   *Lb)         //add函数实现,相加之后的多项式保存于La中
{
SLink   *qa,   *qb,   *pa,   *pb,   *del=NULL;
qa=La;pa=La-> next;
qb=Lb;pb=Lb-> next;
int   sub;   float   sum;
while(!pa-> next&&!pb-> next)//此处将La   Lb分别修改为pa   pb
{
                sub=compare(pa-> exp,pb-> exp);
switch(sub)
{
case   -1:
/*qa-> next=pa;*/   qa=pa;   pa=pa-> next;   break;
case   1:
qa-> next=pb;   pb-> next=pa;  
                                                        pb=pb-> next;   qa=qa-> next;
break;
case   0:
sum=pa-> ceof+pb-> ceof;
if(sum!=0.0)
{
pa-> ceof=sum;   pa=pa-> next;  
                                                                          del=pb;   pb=pb-> next;
delete   del;
}
else  
{
del=pa;   qa-> next=pa-> next;
                                                                          pa=pa-> next;   delete   del;
del=pb;   pb=pb-> next;   delete   del;
}
break;
//default:break;
}
if(pa==NULL)   qa-> next=pb;
}
}


问题是print函数始终无法被执行,而且调试时总是出现以下信息:
Loaded   'ntdll.dll ',   no   matching   symbolic   information   found.
Loaded   'C:\WINDOWS\system32\kernel32.dll ',   no   matching   symbolic   information   found.
Loaded   'C:\WINDOWS\system32\shimeng.dll ',   no   matching   symbolic   information   found.
运行结束后出现下面的提示信息:
Loaded   'ntdll.dll ',   no   matching   symbolic   information   found.
Loaded   'C:\WINDOWS\system32\kernel32.dll ',   no   matching   symbolic   information   found.
Loaded   'C:\WINDOWS\system32\shimeng.dll ',   no   matching   symbolic   information   found.


The   thread   0xAFC   has   exited   with   code   1   (0x1).
The   program   'D:\Programming\Microsoft   Visual   Studio\Example\exp_005\Debug\mul.exe '   has   exited   with   code   1   (0x1).

不知道是什么回事,高手能帮忙运行一下看看吗,找出问题
谢谢了~~~



[解决办法]
你的问题都出在while循环里的条件问题,仔细想想吧!
[解决办法]
变量名看的头晕
调试的时候出现的信息是正常的,应为你用的是release的库,没有调试信息的

热点排行