Création de 2 tableaux dynamik à 2D

flopflopp Messages postés 14 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 23 mars 2007 - 23 avril 2004 à 14:08
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 - 23 avril 2004 à 17:15
Bonjour, je voudrais soumettre un petit problème en C++, j'ai une simple fonction qui crée un tableau dynamique à 2 dimensions, le rempli avec des 1 et l'affiche. Lorsque j'appelle la fonction 1 fois, pas de problème mais lorsque je l'appelle 2 fois pour créer 2 tableaux différents, ça ne marche pas, pouvez vous m'aider?
merci !

voici mon code...

void remplir(int **tableau,int nbl){

int j, i;
tableau = new int*;

for (int k=0;k<nbl;k++)
{
tableau[k]=new int;
}

// on remplis le tableau de chiffres 1
for(i=0;i<2;i++){
for(j=0;j<nbl;j++){
tableau[i][j]=1;
}
}
//on l'affiche
for(i=0;i<2;i++){
for(j=0;j<nbl;j++){
printf(" %d ",tableau[i][j]);
}
printf("\n");
}
}

int main()
{
int **tabi;
int **tabo;
remplir(tabi,10);
remplir(tabo,50);
return 0;
}

5 réponses

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 avril 2004 à 15:13
tableau = new int*;
tableau[k]=new int;

faut préciser la taille
new int[nbl];
0
flopflopp Messages postés 14 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 23 mars 2007
23 avril 2004 à 16:17
C'est cool ça marche mais maintenant j'ai une autre question, comment puis je accéder à 1 élément du tableau, puisque étant de type **int je ne peut pas faire std::cout<<tabi[0][0] par exemple !! Comment dois je faire?

Merci
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 avril 2004 à 16:59
voici un petit exemple pour que tu te rendes compte
int main(int argc, char* argv[])
{
int **tableau;
tableau = new int*[10];
for (int i=0;i<10;i++)
{
tableau[i] = new int[10];
for (int j=0;j<10;j++)
tableau[i][j] = j;
}
for (i=0;i<10;i++)
{
for (int j=0;j<10;j++)
cout << tableau[i][j] << ";";
cout << endl;
}

return 0;
}

0
flopflopp Messages postés 14 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 23 mars 2007
23 avril 2004 à 17:04
Oui ça il y a aucun problème mais si tu veux moi j'ai la fonction qui créer mon tableau et le rempli et l'affiche mais c'est après, dans le main que je veux accéder à un élément et donc faut que je passele tableau par référence et c'est ça que j'arrive pas à faire !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 avril 2004 à 17:15
soit tu fais le new dans le main, soit la fonction de remplissage te remploi le resultat du new, sinon, tu ne sais pas quoi à quelle adresse il faut chercher

int **rempli(int **tableau)
{
tableau = new int*[10];
for (int i=0;i<10;i++)
{
tableau[i] = new int[10];
for (int j=0;j<10;j++)
tableau[i][j] = j;
}
return tableau;
}

int main(int argc, char* argv[])
{
int **tab;
tab=rempli(tab);
for (int i=0;i<10;i++)
{
for (int j=0;j<10;j++)
cout << tab[i][j] << ";";
cout << endl;
}
return 0;
}

0
Rejoignez-nous