J'écris ce programme traitant des polynômes. J'ai des problèmes avec la dernière partie de ma mission. J'ai besoin de trier les polynômes par degrés, puis de réduire le polynôme s'il y a un double degré dans le polynôme. Le code que j'ai écrit ci-dessous a un défaut de segmentation pour les deux fonctions. Dans mon void reduce(poly &p1)
mon erreur se produit au zc= zc->next
. Existe-t-il une manière différente d'aborder ces fonctions? en plus im en utilisant des listes de liens pour mes polynômesliste de liens insertion trier et réduire les polynômes C++
class Poly{
private :
struct term{
double coef ;
unsigned exp ;
term *next ;
} *term_t ;
public :
Poly() ;
void insert (float c, int e) ;
void isort(Poly &p1);
void reduce (Poly &p1);
~Poly() ;
} ;
void Poly :: isort (Poly & p1){
term *z;
term * zc;
term *c;
if (term_t == NULL && p1.term_t == NULL)
return ;
while (p1.term_t != NULL){
c=p1.term_t;
p1.term_t = p1.term_t->next;
while (p1.term_t!=NULL && c->exp > zc->exp){
z->coef = c->coef;
z->exp=c->exp;
c=c->next;
}
z.printPoly();
zc->exp = z->exp;
z=z->next;
//c=c->next;
}
}
void Poly :: reduce (Poly & p1){
term *z ;
if (term_t == NULL && p1.term_t == NULL)
return ;
term *temp1;
temp1 = p1.term_t ;
while (temp1 != NULL){
if (term_t == NULL){
term_t = new term ;
z = term_t ;
}
else{
z -> next = new term ;
z = z -> next ;
}
if (temp1 -> exp == z->exp)
temp1->coef= temp1-> coef + z->coef;
z->coef = temp1 -> coef;
z->exp = temp1->exp;
temp1=temp1->next;
}
while (temp1 != NULL){
if (term_t == NULL){
term_t = new term ;
z = term_t ;
}
else{
z -> next = new term ;
z = z -> next ;
}
z -> coef = temp1 -> coef ;
z -> exp = temp1 -> exp ;
temp1 = temp1 -> next ;
}
z -> next = NULL ;
}
Je suis heureux que vous ayez dit que c'était devoirs à la question, mais vous devez également utiliser le 'devoirs [ ] 'tag. –