paro 0 Posté(e) le 26 octobre 2006 Partager Posté(e) le 26 octobre 2006 Bonjour à tous, Voila mon probleme : Je voudrais passer un tableau de caractères en 2 dimensions en paramètre d'une fonction. ex : la fonction serait la suivante : void aleatab(char * tabn, int ligne, int colonne); Le tableau est créé dans une autre fonction de la façon suivante : void tab(int ligne, int colonne) { char tabn[ligne][colonne]; ... L'appel de la fonction est le suivant : aleatab(tabn, ligne, colonne); La fonction aleatab est définie comme ceci : void aleatab(char * tabn, int ligne, int colonne) { int nombreAuHasard, i,j; srand(time(NULL)); for (i=0;i { for(j=0;j { nombreAuHasard = (rand() % (MAX - MIN + 1)) + MIN; /* on tire aleatoirement 1 ou 0 */ if(nombreAuHasard==0) { tabn[i][j]=' '; } else { tabn[i][j]='*'; } } } } lors de l'execution j'obtiens les erreurs suivantes : warning: passing argument 1 of ‘aleatab’ from incompatible pointer type In function ‘aleatab’: error: subscripted value is neither array nor pointer error: subscripted value is neither array nor pointer Je pensais pourtant que l'on devait s'y prendre ainsi pour passer un tableau à 2 dimensions en paramètre... Si quelqu'un pouvait m'éclaircir sur ce probleme. Merci d'avance. Lien à poster
rjds 0 Posté(e) le 26 octobre 2006 Partager Posté(e) le 26 octobre 2006 deja tu cree le tableau dans une fonction sans garder en memoire l'adresse du tableau. En plus a chaque appel de fonction, du cree un tableau, mais il sera automatiquement detruit lors de la fin de la fonction Ensuite, un tableau de 2 dimension n'est en fait qu'un pointeur sur pointeur. Donc il faut passer un paramêtre du genre char **tab. pour resumer, 1: Creer et allouer le tableau : tab = (char **)malloc(nb_lignes * sizeof(char *)) for(i=0;i tab = (char*)malloc(nb_colonnes * sizeof(char)) 1.bis: Initialiser le tableau avec des 0, en particulier si c'est pour utiliser des chaines de caractères. 2: Passer le tableau en paramètre void fonction(char **tab, int nb_lignes, int nb_colonnes) 3: utiliser le tableau normalement en faisant attention a pas deborder Lien à poster
paro 0 Posté(e) le 26 octobre 2006 Auteur Partager Posté(e) le 26 octobre 2006 Merci bien pour ton aide. Il y a 2-3 trucs que j'ai oublié de préciser... Premièrement, ce tableau ne contiendra en fait que des '*' ou des espaces et sert en fait à symboliser une generation de bacteries selon le jeu de la vie de Conway. Deuxièmement, on m'a demandé de le faire sans utiliser d'allocation dynamique (mais s'il n'y a pas d'autre solution, je ferais avec). J'essayerais les modifications au plus tôt. Encore merci. Lien à poster
rjds 0 Posté(e) le 13 novembre 2006 Partager Posté(e) le 13 novembre 2006 oui tu n'est pas obligé d'utilise l'alloc dynamique, tu peux simplement le declarer tel que tab[50][50] par exemple. le resultat sera le meme. si le tableau ne contient que des '*' et des ' ' le type char est tout indiqué. Lien à poster
paro 0 Posté(e) le 14 novembre 2006 Auteur Partager Posté(e) le 14 novembre 2006 C'est comme ça que je m'y suis pris, ça marche enfin. Merci bien! Lien à poster
Messages recommandés