Bonjour, je dois coder la division euclidienne de polynomes, mais le résultat n'est pas bon. Je pense qu'il y a une erreur dans ma boucle mais je ne trouve pas... Merci pour votre aide :
- include "stdafx.h"
- include <stdlib.h>
int main()
{
int n, m, j, k;
double* P;
double* B;
double* Q;
// les degrés
printf("Entrez le degré du polynome 1 : \n");
scanf("%d",&n);
fflush(stdin);
printf("Entrez le degré du polynome 2 : \n");
scanf("%d",&m);
fflush(stdin);
// les allocations
P = (double*)malloc((n+1)*sizeof(double));
if(P == NULL) printf("Allocation impossible \n");
B = (double*)malloc((m+1)*sizeof(double));
if(B == NULL) printf("Allocation impossible \n");
// Entrée des coefficients
for(j = 0 ; j <= n ; j++)
{
printf("Entrez le coeff d'ordre %d du premier polynome \n", j);
scanf("%lf",&P[j]);
fflush(stdin);
}
for(j = 0 ; j <= m ; j++)
{
printf("Entrez le coeff d'ordre %d du second polynome \n", j);
scanf("%lf",&B[j]);
fflush(stdin);
}
// Division proprement dite
if(m>n)
{
printf("Le quotient est nul et le reste équivaut au premier polynome");
}
else
{
Q = (double*)malloc((n-m+1)*sizeof(double)); //le degré est la différence des deux
if(Q == NULL) printf("Allocation impossible \n");
for(k = 0 ; k <= n-m ; k++)
{
Q[n-m-k] = P[n-k]/B[m];
for(j = n-k ; j >= n-m-k ; j--)
{
P[j] = P[j] - B[j+m-n+k]*P[n-k]/B[m];
}
}
}
//affichage
for(j=0 ; j<= n-m ; j++)
{
printf("Le coeff numéro %d du quotient vaut %lf : \n",j,Q[j]);
}
for(j=0 ; j<m ; j++)
{
printf("Le coeff numéro %d du reste vaut %lf : \n",j,P[j]);
}
free(P);
free(Q);
free(B);
return 0;
}