Déterminant d'une matrice en C
Résolu
VEF King
-
VEF King -
VEF King -
Bonjour à tous,
Voilà, mercredi, j'ai un examen en programmation et le professeur nous a laissé comprendre qu'on devrait être capable de calculer le déterminant d'une matrice...
Je me suis donc fortement penché sur la question mais j'ai un problème avec ma fonction qui calcule le déterminant, j'ai l'impression lors de la compilation, quelle boucle à l'infini alors que ça me semble impossible... voici mon code
Je me suis un peu fait un lavage de cerveau avec la conception du programme et je ne vois plus rien... alors si vous pouvez m'aider, ce serait sympa...
Voilà, mercredi, j'ai un examen en programmation et le professeur nous a laissé comprendre qu'on devrait être capable de calculer le déterminant d'une matrice...
Je me suis donc fortement penché sur la question mais j'ai un problème avec ma fonction qui calcule le déterminant, j'ai l'impression lors de la compilation, quelle boucle à l'infini alors que ça me semble impossible... voici mon code
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <conio.h> #define N 8 void affichage (float mat[][N], int n) { int i, j; printf ("Affichage de la matrice %dx%d", n, n); for (i=0; i<n; i++) { printf ("\n"); for (j=0; j<n; j++) { printf ("%.3f\t", mat [i][j]); } } printf ("\n\n"); } float determinant (float mat[][N], int n) { float result; float mat_n_moins_1 [N][N]; int i, j, k; double l, puiss=0; if (n==1) return mat [0][0]; else { result = 0; for (i=0; i<n; i++) { for (j=0; j<n-1; j++) { for (k=0; k<n-1; k++) { mat_n_moins_1 [j][k] = mat [j+1][k+(k>=i)]; } } l=i; result = result + pow(-1, l) *mat[0][i] * determinant(mat_n_moins_1, n-1); } return result; } } int main () { float tab[N][N]; float result [N][N]; tab [0][0]= -1;tab [0][1]= 2;tab [0][2]= 5; tab [1][0]= 1;tab [1][1]= 2;tab [1][2]= 3; tab [2][0]= -2;tab [2][1]= 8;tab [2][2]= 10; affichage (tab, 3); printf ("determinant : %f", determinant (tab, 3)); getch (); }
Je me suis un peu fait un lavage de cerveau avec la conception du programme et je ne vois plus rien... alors si vous pouvez m'aider, ce serait sympa...
A voir également:
- Déterminant d'une matrice en C
- Diagonale secondaire d'une matrice - Forum C
- Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué - Guide
- Excel vous ne pouvez pas modifier une partie de matrice ✓ - Forum Excel
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
- Remplir une matrice en 7 lettres ✓ - Forum C
1 réponse
salut,
ton getch ( du cout conio.h // pas present dans la librairie standard , seulement sous ms-dos/win) ne sert pas a grand chose. remplace cette instruction par un return EXIT_SUCCESS; et supprime le fichier d'entete conio.h et puis tu n'utilise pas puiss et result ( en soit ce pas grave mais vois mieux eviter de declarer des variables dont on ne sert pas). si tu est sous windows et que la fenetre se referme avant que tes pu voir le resultat met un : system("pause"); avant le return EXIT_SUCCESS du main
ton getch ( du cout conio.h // pas present dans la librairie standard , seulement sous ms-dos/win) ne sert pas a grand chose. remplace cette instruction par un return EXIT_SUCCESS; et supprime le fichier d'entete conio.h et puis tu n'utilise pas puiss et result ( en soit ce pas grave mais vois mieux eviter de declarer des variables dont on ne sert pas). si tu est sous windows et que la fenetre se referme avant que tes pu voir le resultat met un : system("pause"); avant le return EXIT_SUCCESS du main
Je n'ai toujours pas trouvé mon erreur et ça m'énerve. Par contre c'est vrai que je n'utilise pas puiss. Merci de ton aide mais mon problème n'est toujours pas résolu.
En tout cas merci pour ton aide.