C : Allocation Dynamique de matrices
Fermé
fabienlele
Messages postés
4
Date d'inscription
vendredi 26 décembre 2008
Statut
Membre
Dernière intervention
27 décembre 2008
-
26 déc. 2008 à 21:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 déc. 2008 à 17:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 déc. 2008 à 17:23
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 déc. 2008 à 11:29
27 déc. 2008 à 11:29
Salut,
Bon dans ce cas, la syntaxe va s'allourdir. ^^.
Je t'ai changé plusieurs petites choses (comme enlever les getch, etc).
Si t'as des questions, n'hésite pas.
Bon dans ce cas, la syntaxe va s'allourdir. ^^.
Je t'ai changé plusieurs petites choses (comme enlever les getch, etc).
Si t'as des questions, n'hésite pas.
#include <stdio.h> #include <stdlib.h> void afficher(double**,int); void saisie(double***,double***,int*); int main(void) { int i; int n; double **mat1,**mat2; // Initialisation des matrices saisie (&mat1,&mat2,&n); printf("Voici la matrice 1 :\n\n"); afficher(mat1,n); printf("Voici la matrice 2 :\n\n"); afficher(mat2,n); // On libère la mémoire utilisée par les matrices for(i=0; i<n; i++) { if(mat1[i] != NULL) free(mat1[i]); if(mat2[i] != NULL) free(mat2[i]); } if (mat1 != NULL) free(mat1); if (mat2 != NULL) free(mat2); return 0; } void afficher(double **A,int n) { int j,k; for (j=0;j<n;j++) { for (k=0;k<n;k++) printf("%lf ",A[j][k]); printf("\n"); } printf("\n\n"); } void saisie (double * **A,double * **B,int *m) { int i,j,k; // Dimension des matrices printf("Dimension n = ");fflush(stdout); scanf("%d",m); while(getchar()!='\n'); //On réserve A *A = malloc(*m *sizeof **A); if (*A == NULL) { printf("\n Allocation dynamique IMPOSSIBLE pour A\n"); exit(EXIT_FAILURE); } for (k=0; k< *m ; k++) { (*A)[k] = malloc(*m * sizeof ***A); if ((*A)[k] == NULL) { printf("\n Allocation dynamique IMPOSSIBLE pour A[%d]\n",k); exit(EXIT_FAILURE); } } //On réserve B *B = malloc(*m * sizeof **B); if (*B == NULL) { printf("\n Allocation dynamique IMPOSSIBLE pour B\n"); exit(EXIT_FAILURE); } for (k=0; k< *m ; k++) { (*B)[k] = malloc(*m * sizeof ***B); if ((*B)[k] == NULL) { printf("\n Allocation dynamique IMPOSSIBLE pour B[%d]\n",k); exit(EXIT_FAILURE); } } // Remplissage des matrices // printf("Matrice A:\n"); for (i=0;i<*m;i++) for (j=0;j<*m;j++) { printf("A[%d][%d] = ",i,j);fflush(stdout); scanf("%lf",&(*A)[i][j]);printf("\n"); } printf("Matrice B:\n"); for (i=0;i<*m;i++) for (j=0;j<*m;j++) { printf("B[%d][%d] = ",i,j);fflush(stdout); scanf("%lf",&(*B)[i][j]); printf("\n"); } }