Affichage des elements d'une matrice en C
Résolu
gahmed
-
gahmed -
gahmed -
Bonjour,
j'ai un problème avec mon programme C. Tous tournent à merveille sauf la partie affichage. Si je compile ça passe de même que si j'exécute. Le problème qu'à l'affichage le programme n'affiche quelques valeurs que j'ai eu saisies.
Voici mon code
j'ai un problème avec mon programme C. Tous tournent à merveille sauf la partie affichage. Si je compile ça passe de même que si j'exécute. Le problème qu'à l'affichage le programme n'affiche quelques valeurs que j'ai eu saisies.
Voici mon code
#include<stdio.h> #include<stdlib.h> //Crétion d'un nouveau type appelé matrice typedef struct matrice{ int **el; int n_lig; int n_col; }mat; mat T; //Fin création int main(){ int i,j; //Saisie de la taille de la matrice printf("Donner le nombre de lignes :"); scanf("%d", &T.n_lig); printf("Donner le nombre de colonnes :"); scanf("%d", &T.n_col); //Fin saisie //Vérification de l'allocation de la mémoire T.el=(int**) malloc(T.n_lig*T.n_col*sizeof(int)); if (T.el == NULL) { printf("Memoire non allouee"); exit(0); } else printf("Memoire allouee"); //Fin vérification //Saisie de valeurs sur la matrice for (i=0; i<T.n_lig; i++){ for (j=0; j<T.n_col; j++){ printf("\nT[%d,%d]=",i,j); scanf("%d", &T.el[i,j]); } } //Fin saisie //Affichage des éléments de la matrice printf("les elements de la matrice sont :"); for (i=0; i<T.n_lig; i++){ for (j=0; j<T.n_col; j++){ printf("%d ", T.el[i,j]); } } //Fin affichage getch(); return 0; }
A voir également:
- Afficher une matrice en c
- Afficher appdata - Guide
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
- Afficher un tableau en c - Forum C
- Afficher google en page d'accueil - Guide
- Afficher taille dossier windows - Guide
2 réponses
Salut,
Comme dit loupius : T.el[i,j] ne fera pas ce que tu souhaites. Si tu veux une matrice il faut utiliser T.el[i][j].
Ensuite pour utiliser getch(), tu dois inclure conio.h ou encore mieux, utiliser getchar(); (fonction standard).
Et enfin l'erreur vient d'une mauvaise allocation mémoire.
T.el=(int**) malloc(T.n_lig*T.n_col*sizeof(int));
Tu alloues un seul tableau d'une dimension. Toi ce que tu veux, c'est un tableau 2D.
Il faudrait donc faire :
Et enfin, il ne faut surtout pas oublier de libérer les zones allouées avec free.
cdlt,
Comme dit loupius : T.el[i,j] ne fera pas ce que tu souhaites. Si tu veux une matrice il faut utiliser T.el[i][j].
Ensuite pour utiliser getch(), tu dois inclure conio.h ou encore mieux, utiliser getchar(); (fonction standard).
Et enfin l'erreur vient d'une mauvaise allocation mémoire.
T.el=(int**) malloc(T.n_lig*T.n_col*sizeof(int));
Tu alloues un seul tableau d'une dimension. Toi ce que tu veux, c'est un tableau 2D.
Il faudrait donc faire :
T.el=malloc(T.n_lig*sizeof(int)); if (T.el==NULL) { ... } for(i=0;i<T.n_lig;i++) { T.el[i]=malloc(T.n_col*sizeof(int)); if (T.el[i]==NULL) { ... } }
Et enfin, il ne faut surtout pas oublier de libérer les zones allouées avec free.
for(i=0;i<T.n_lig;i++) { free(T.el[i]),T.el[i]=NULL; } free(T.el),T.el=NULL;
cdlt,
gahmed
Merci beaucoup fiddy maintenant tous tournent à merveille