ALLOCATION TABLEAU DEUX DIMENSIONS

tomsawyerbelgique Messages postés 6 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 29 mai 2003 - 15 avril 2003 à 16:13
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 16 avril 2003 à 23:02
Bonjour ,

j'aimerais bien allouer dynamiquement de la mémoire pour un tableau a deux dimensions. Je demanderais le nombre de ligne et de colonne puis j'alloue. Mais j'y arrive pas a le faire quelqu'un peut m'aider. Merci

Ps: utilisation de la fonction calloc().

Merci

2 réponses

cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
16 avril 2003 à 13:19
je te le fais en C++ (new et delete), pas en C:

Pour l'allocation memoire :if (nbl 0 || nbc0)
return (T **)0;

image = new T * [nbl];
if (image == 0)
{
cout << "Echec lors de l'allocation memoire!!!" << endl;
return (T **)0;
}
for (int i=0;i<nbl;i++)
{
image[i] = new T [nbc];
if (image[i] == 0)
{
for (int j=0;j ** image), nbl et nbc, je te laisse deviner ...
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
16 avril 2003 à 23:02
3 mthodes:

1. allocation totale et acces linéaire:
int *t= (int *)calloc(nbLignes, nbColonnes*sizeof(**t));

acces à x-ième colonne de la y-ième ligne:
acces 1: t[(y * nbColonnes) + x]
ou
acces 2: t[(x * nbLignes) + y]
Attention: ne pas mélanger acces 1 et acces 2

2. allocation totale et acces indexé:
nbLines doit etre une constante
nbColonnes peut être une variable
int t[nbLignes][]= (int **)calloc(nbLignes, nbColonnes*sizeof(**t));

acces à x-ième colonne de la y-ième ligne:
t[y][x]

ou
nbColonnes doit etre une constante
nbLines peut être une variable
int t[nbColonnes][]= (int **)calloc(nbColonnes,nbLignes*sizeof(**t));

acces à x-ième colonne de la y-ième ligne:
t[x][y]

3. allocation successive et acces indexé:
nbLines doit etre une constante
nbColonnes peut être une variable
int *t[nbLignes]= (int **)calloc(nbLignes, sizeof(*t));
int i;

for(i= 0; i < nbLignes; i++)
t[i]= (int *)calloc(nbColonnes, sizeof(*t[i]))

acces à x-ième colonne de la y-ième ligne:
t[y][x]

ou
nbColonnes doit etre une constante
nbLines peut être une variable
int *t[nbColonnes]= (int **)calloc(nbColonnes, sizeof(*t));
int i;

for(i= 0; i < nbColonnes; i++)
t[i]= (int *)calloc(nbLignes, sizeof(*t[i]))

acces à x-ième colonne de la y-ième ligne:
t[x][y]

Core Breaker :)
0
Rejoignez-nous