PDA

View Full Version : سوال: اشکال زدایی....



tahere-20
یک شنبه 15 آبان 1390, 08:40 صبح
این رو برام مشکلش رو رفع کنید. این برنامه جمع دو چندجمله ای هست.

#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;

class polynode{private:
int coef;
int pow;
polynode *link;
friend class poly;
};

class poly{public:
poly();
poly add(poly p2);
void addtotail(int,int);
double eval(int x);
void input();
void display();
private:
polynode*f;
polynode*l;
};
//************************************************** ***************************
poly::poly(){f=l=NULL;}
//*********************************
void poly::input()
{polynode *p=new polynode;
int m;
cout<<"m= ";
cin>>m;
while(m!=0)
{cout<<"zarib:";
cin>>p->coef;
cout<<"tavan:";
cin>>p->pow;
if(f==l)
f=p;
else
{l->link=p;
l=p;}
--m;
}
}
//************************************************** **
void poly::display()
{polynode *cur;
cur=f;
while(cur)
{cout<<cur->coef
<<"\t"<<cur->pow<<"\n";
cur=cur->link;}
}
//************************************************** ********
poly poly::add( poly p2)
{poly p3;
polynode*n1=f;
polynode*n2=p2.f;
int k=0;
while(n1&&n2)
{if(n1->pow==n2->pow)
{k=n1->coef+n2->coef;
if(k!=0)
{p3.addtotail(k,n1->pow);
n1=n1->link;
n2=n2->link;}
}
else if((n1->pow)>(n2->pow))
{p3.addtotail(n1->coef,n1->pow);
n1=n1->link;
}
else
{p3.addtotail(n2->coef,n2->pow);
n2=n2->link;}
while(n1){p3.addtotail(n1->coef,n1->pow);
n1=n1->link;}
while(n2){p3.addtotail(n2->coef,n2->pow);
n2=n2->link;}
}
cout<<"dddd\n";
return p3;
}
//************************************************** *************
void poly::addtotail(int c,int po)
{polynode*p=new polynode;
p->coef=c;
p->pow=po;
if(l==NULL)
l=p;
else
{l->link=p;
l=p;}
}
//************************************************** **************
double poly::eval(int x)
{int a,b;
double sum=0;
polynode*cur=f;
while(cur)
{cur->coef=a;
cur->pow=b;
sum+=(a*pow(x,b));
}
return sum;
}
//************************************************** *************8
void menu ()
{poly ob,ob1;
int op;
int x;
cout<<"\nkodam gozine: ";
cin>>op;

switch(op)
{case 1:{ob.input();
ob1.input();
break;}
case 2:{ob.add(ob1);
break;}
case 3:{cout<<"x= ";
cin>>x;
ob.eval(x);}
case 4:{ob.display();
break;}
case 5:exit(1);
}
menu();
}
//************************************************** ****************8
int main()
{cout<<"select:\n"<<"1.input 2.add 3.eval 4.display 5.cancel";
menu();
return 1;
}