Creation d'une matrice en langage c
bakarim
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
bakarim Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
bakarim Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
sep, pour réaliser une matrice j'ai cherche sur internet comment on peut réaliser un tableau dynamique a 2 dimensions.J'ai trouve plusieurs résultats mes le problème qui se pose je ne parvient pas a comprendre exactement le fonctionnent de l'algorithme qu'ils utilisent.Est ce que quelqu'un peut m'expliquer voila un des solution que j'ai trouve :#include <stdlib.h>
#include <stdio.h>
#define COLONNES 5
#define LIGNES 3
/* On cherche à allouer un tableau de caractères de 5 colonnes et 3 lignes*/
int main (void)
{
char** tab_2d = NULL;
int i;
/* On alloue */
tab_2d = malloc (sizeof (char*) * LIGNES);
for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES);
/* On libère */
for (i = 0; i < LIGNES; ++i)
free (tab_2d[i]);
free (tab_2d);
return 0;
}
sep, pour réaliser une matrice j'ai cherche sur internet comment on peut réaliser un tableau dynamique a 2 dimensions.J'ai trouve plusieurs résultats mes le problème qui se pose je ne parvient pas a comprendre exactement le fonctionnent de l'algorithme qu'ils utilisent.Est ce que quelqu'un peut m'expliquer voila un des solution que j'ai trouve :#include <stdlib.h>
#include <stdio.h>
#define COLONNES 5
#define LIGNES 3
/* On cherche à allouer un tableau de caractères de 5 colonnes et 3 lignes*/
int main (void)
{
char** tab_2d = NULL;
int i;
/* On alloue */
tab_2d = malloc (sizeof (char*) * LIGNES);
for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES);
/* On libère */
for (i = 0; i < LIGNES; ++i)
free (tab_2d[i]);
free (tab_2d);
return 0;
}
A voir également:
- Creation d'une matrice en langage c
- Langage ascii - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
4 réponses
c'est pas un tableau a l'intérieur de l'autre mais chaque élément de tableau sera un tableau donc pour ca qu'on a déclaré un pointeur double
char** tab_2d = NULL; // déclaration est initialisation (le double pointeur déjà égal a NULL)
tab_2d = malloc (sizeof (char*) * LIGNES); // on a maintenant les éléments tab_2d[0], tab_2d[1] ...
//est pour chaque élément on va crée un tableau dynamique
for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES); //tab_2d[0] est un pointeur (ou tab dyn) qui contien 5 element (5 et le nbr colonne ) donc on a tab_2d[0][0] tab_2d[0][1] tab_2d[0][2] tab_2d[0][3] tab_2d[0][4] même chose pour tab_2d[1] ....
char** tab_2d = NULL; // déclaration est initialisation (le double pointeur déjà égal a NULL)
tab_2d = malloc (sizeof (char*) * LIGNES); // on a maintenant les éléments tab_2d[0], tab_2d[1] ...
//est pour chaque élément on va crée un tableau dynamique
for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES); //tab_2d[0] est un pointeur (ou tab dyn) qui contien 5 element (5 et le nbr colonne ) donc on a tab_2d[0][0] tab_2d[0][1] tab_2d[0][2] tab_2d[0][3] tab_2d[0][4] même chose pour tab_2d[1] ....
pour une matrice de 2 dim vous avez 2 possibilité soit statique(vous connaissez déja le nbr des lignes et des colonnes)
soit dynamique (les lignes et les colonnes seront passé a la saisie )
donc pour cet exemple :
1 chase on a allouée l'espace mémoire pour les lignes
a00
a01
a02
....
et pour chaque a(i,i) on va allouée de la memoire
a00 a10 a20 ...
a01 a11 a21 ...
a02 a12 a22 ...
...
même chose pour la libération de la mémoire
soit dynamique (les lignes et les colonnes seront passé a la saisie )
donc pour cet exemple :
1 chase on a allouée l'espace mémoire pour les lignes
a00
a01
a02
....
et pour chaque a(i,i) on va allouée de la memoire
a00 a10 a20 ...
a01 a11 a21 ...
a02 a12 a22 ...
...
même chose pour la libération de la mémoire
merci d'avance.
ce que j'ai pas compris c'est la premier malloc est ce que creer un tableau a 2 dimension revient a creer un tablaux a l'interieur d'unautre tableau. parceque des la 1 ere declaration (char** tab_2d = NULL)je pense que c'est tableau qui contient juste des pointeur.
est ce que ca est juste ou non.
ce que j'ai pas compris c'est la premier malloc est ce que creer un tableau a 2 dimension revient a creer un tablaux a l'interieur d'unautre tableau. parceque des la 1 ere declaration (char** tab_2d = NULL)je pense que c'est tableau qui contient juste des pointeur.
est ce que ca est juste ou non.