Bonjour svp j'ai besoin de votre aide, j'ai fait une fonction qui calcule le produit de deux polynômes, la première et la deuxième partie du fonction marche mais la dernière "else" ne marche pas (quand les deux polynômes ont la même degré)
Pour le calcule j'ai utilisé l'algorithme suivante:
avec "n" le degré du premier polynôme et "p" le degré du deuxième et "ai" et "bi" les coefficients des deux polynômes.
La structure et les prototypes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include<stdio.h> #include<stdlib.h> #include<math.h> typedef struct { int degre; float * coef; }polynome; void affichage(polynome px); polynome creation_poly(int n); polynome produit_poly(polynome fx,polynome gx);
Le main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 int main() { polynome poly,poly1; printf("entrez la degre du premier polynome:\n"); scanf("%d",&poly.degre); poly=creation_poly(poly.degre); poly=saisir_poly(poly.degre); printf("entrez la degre du deuxième polynome:\n"); scanf("%d",&poly1.degre); poly1=creation_poly(poly1.degre); //remplace la ligne d après poly1=saisir_poly(poly1.degre); //poly.coef=calloc(poly.degre+1,sizeof(polynome)); //int i; //for(i=0;i<poly.degre+1;i++){ //printf("entrez le coefficients d ordre %d du polynome:\n",poly.degre-i); //scanf("%f",poly.coef+i); // } //printf("la polynome:\n"); // for(i=0;i<poly.degre+1;i++) //printf("%.2fX^%d\t",*(poly.coef+i),poly.degre-i); //Affichage affichage(poly); printf("\n"); affichage(poly1); //Calcul de la valeur d un polunome en x // float x,vx; // printf("\nCalcul de la valeur d un polunome en x:\n"); // printf("entrez la valeur de x SVP:\n",x); // scanf("%f",&x); // vx=calcul_valeur(poly,x); // printf(" x=%f\n",vx); //Calcul du derivé // printf("La polynome derive:\n"); // polynome pdr=derive(poly); // affichage(pdr); //Le produit de deux polynomes printf("\nLe produit des deux polynomes:\n"); polynome pp=produit_poly(poly,poly1); affichage(pp); system("pause"); return 0; }
fonction pour afficher une polynome
Fonction ppour crée une polynome
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void affichage(polynome px) { int i; for(i=0;i<px.degre+1;i++) printf("%.2fX^%d\t",*(px.coef+i),px.degre-i);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 polynome creation_poly(int n) { polynome px; px.degre=n; px.coef=calloc(px.degre+1,sizeof(float)); return px; }
et enfin la fonction Produit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 polynome produit_poly(polynome fx,polynome gx) { int i,j; polynome hx=creation_poly(fx.degre+gx.degre); if(fx.degre>gx.degre) { for(i=0;i<=hx.degre;i++) { *(hx.coef+i)=0; for(j=0;j<=i;j++) *(hx.coef+i)+= *(gx.coef+j)*(*(fx.coef+(i-j))); } } else if(gx.degre>fx.degre) { for(i=0;i<=hx.degre;i++) { *(hx.coef+i)=0; for(j=0;j<=i;j++) *(hx.coef+i)+= *(fx.coef+j)*(*(gx.coef+(i-j))); } } else //Problème içi { for(i=0;i<=hx.degre;i++) { *(hx.coef+i)=0; for(j=0;j<=i;j++) { *(hx.coef+i)+= *(fx.coef+j)*(*(gx.coef+(i-j))); } } } return hx; }
Partager