Tableaux de deux dimensions

MBALHOUSSE
Messages postés
15
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2008
- 14 mai 2008 à 15:42
glipper
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
- 14 mai 2008 à 18:37
j'ai une table de données de deux dimensions, je souhaite la stocker en C (visuel C++).
pouver vous m'aider.
merci.

4 réponses

glipper
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
14 mai 2008 à 16:30
ta question est un peu floue.

Si tu as un tableau de 3x5 entiers et que tu le sais dès le départ, tu peux faire comme ceci je crois :

int Data[5][3] = {
        {1, 2, 3}
        {4, 5, 6}
        {7, 8, 9}
        {10, 11, 12}
        {13, 14, 15}
};

Sinon, tu peux utiliser un pointeur à deux indirections, si tu ne sais pas à l'avance combien il y aura de données :

int **Data;
int H = 5;
int L = 3;

// on alloue de la mémoire
Data = (int**) malloc(H*sizeof(int*));
for (j=0; j<H; j++)
    *Data[j] = (int*) malloc(L*sizeof(int));

......
// on peut utiliser les données
printf("%d", Data[j][i]);
.......

// puis il faut liberer à la mémoire à la fin
for (j=0; j<H; j++)

    free(*Data[j]);
free(Data);

Voila, je n 'ai pas testé, mais ça devrait marcher. Je ne sais pas si j'ai répondu à ta question, elle est un peu vague...

Glipper
0
glipper
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
14 mai 2008 à 16:33
pardon une petite erreur, petite etoile en trop :

int **Data;
int H = 5;
int L = 3;

// on alloue de la mémoire
Data = (int**) malloc(H*sizeof(int*));
for (j=0; j<H; j++)
    Data[j] = (int*) malloc(L*sizeof(int));

......
// on peut utiliser les données
printf("%d", Data[j][i]);
.......

// puis il faut liberer à la mémoire à la fin
for (j=0; j<H; j++)
    free(Data[j]);
free(Data);
0
MBALHOUSSE
Messages postés
15
Date d'inscription
mercredi 14 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2008

14 mai 2008 à 18:00
merci c cool,
mais si j'ai un tableau ou il y'a pas que des entiers, mais aussi des caracteres,
par exemple:

{{toto,1}
{tata 2}};

toujours en C++.
0
glipper
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
14 mai 2008 à 18:37
Bon je crois qu'il va falloir faire autrement alors..............
moi je mettrais tout en caractere. Mais on a alors un tableau en 3 dimensions.

char Data[5][3][50];

strcpy(Data[0][0], "toto");

strcpy(Data[0][1], "titi");

strcpy(Data[0][2], "tata");
strcpy(Data[1][0], "5");
strcpy(Data[1][1], "iop");
strcpy(Data[1][2], "8");
......etc etc

C'est beaucoup plus long, mais je vois pas trop comment faire sinon.
0