Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // voici mon code:
- Poly tidy_poly (Poly p1)
- {
- Poly nouveau_poly,poly_partiel;
- nouveau_poly = malloc(sizeof(struct p_data));
- nouveau_poly->red = p1 ;
- poly_partiel= malloc(sizeof(struct p_data));
- poly_partiel = p1 ;
- while (p1 != NULL)
- {
- if (p1->red != NULL)
- {
- if ( p1->deg > (p1->red)->deg )
- {
- print_poly(p1);
- p1->red = malloc(sizeof(struct p_data));
- p1 = p1->red ;
- }
- else if (p1->deg < (p1->red)->deg)
- {
- print_poly(p1);
- Poly tmp ;
- tmp = malloc(sizeof(struct p_data));
- tmp->deg = p1->deg ;
- tmp->coef = p1->coef ;
- p1->deg = (p1->red)->deg ;
- p1->coef = (p1->red)->coef ;
- p1 = p1->red;
- p1->deg = tmp->deg ;
- p1->coef = tmp->coef ;
- }
- else
- {
- if (p1 != NULL )
- {
- p1->coef = base_add(p1->coef , (p1->red)->coef);
- if (p1->red->red != NULL)
- {
- printf ("blaaa");
- Poly tmp2;
- tmp2=p1 ;
- tmp2->red = NULL ;
- p1= (p1->red)->red ;
- if (p1->deg >= inf_deg (p1))
- {
- Poly poly_stocke ;
- int degre_stocke;
- Field coeff_stocke ;
- degre_stocke = p1->deg ;
- coeff_stocke = p1->coef ;
- p1 = tmp2 ;
- poly_stocke->deg = degre_stocke;
- poly_stocke->coef = coeff_stocke;
- poly_stocke = malloc (sizeof(struct p_data)) ;
- poly_stocke->red = tmp2 ;
- tidy_poly(poly_stocke);
- }
- }
- else
- { printf ("blaaaa");
- p1->red = NULL ;
- p1= p1->red;
- }
- }
- }
- }
- else if (p1 !=NULL)
- {
- if (p1->deg > inf_deg (nouveau_poly))
- {
- printf ("blaqqqq");
- Poly tmp2;
- tmp2=p1 ;
- tmp2->red = NULL ;
- Poly poly_stocke ;
- int degre_stocke;
- Field coeff_stocke ;
- degre_stocke = p1->deg ;
- coeff_stocke = p1->coef ;
- p1 = tmp2 ;
- poly_stocke->deg = degre_stocke;
- poly_stocke->coef = coeff_stocke;
- poly_stocke = malloc (sizeof(struct p_data)) ;
- poly_stocke->red = tmp2 ;
- tidy_poly(poly_stocke);
- }
- else
- {
- print_poly(p1);
- p1=p1->red;
- }
- }
- }
- return (nouveau_poly) ;
- }
- // Je le teste avec p1= 1X^2 + 1X^3 + 1X^0
- // et je veux qu'il me retourne p1 = 1X^3 + 1X^2 + 1X^0
- // j'ai mis des printf et des print_poly un peu partout pour savoir ou il en est et ce qu'il fait .
- // il me retourne p1 = 1X^3 + 1X^2 (mais sans 1X^0)
- // Il passe d'abord dans la boucle else if (p1->deg < (p1->red)->deg) (normal)
- //puis dans la boucle du debut: if ( p1->deg > (p1->red)->deg ) (normal)
- // a ce stade, p1 est placé sur 1X^0
- // il se rend donc tout en bas
- // else
- {
- print_poly(p1);
- p1=p1->red;
- }
- // mais il ne m'affiche pas print_poly et apparement il quitte la boucle sans compter X^0
Add Comment
Please, Sign In to add comment