problem de tableau a 2 dim passer en argument dans une fonction - C - Programmation
Marsh Posté le 27-10-2003 à 20:00:03
notben >> y'en a marre à force de déchiffrer du code ! y'a des balises C/C++, c'est fait pour rendre le code plus lisible et c'est pas fait pour les chiens.
edit: et fais un effort sur l'orthographe aussi
Marsh Posté le 01-11-2003 à 19:32:03
oui l'orthographe tape à l'oeil, le code aussi. Pas besoin de balises pour voir que c'est n'importe quoi.
Marsh Posté le 01-11-2003 à 19:40:03
notben a écrit : bon bin si ya quelqun qui a une idee j'aimerai bien pouvoir compiler ce bordel pour avancer mon bouleau |
Laisse ta hache, et chauffe toi au gaz, il parait que c'est moins cher...
Marsh Posté le 01-11-2003 à 20:22:32
Tu ne peux pas utiliser des tableaux multidimension si tu ne spécifie pas sa taille.
Remplace "int T[][]" par "int * T" et fais ca pour y acceder : "T[i+j*taillex]"
Marsh Posté le 02-11-2003 à 10:35:17
oula Kristoph tu fais appel aux pointeurs, je ne sais pas s'il a vu ça encore ... en tout cas quand j'en étais aux tableaux à 2 dimensions je n'avais pas vu ces bêtes là
Pour le problème des tableaux en argument, en spécifiant uniquement la première dimension dans la définition de la fonction qui appelle le tableau je crois que ça marche.
Marsh Posté le 02-11-2003 à 10:53:11
freeman_78 a écrit : oula Kristoph tu fais appel aux pointeurs, je ne sais pas s'il a vu ça encore ... en tout cas quand j'en étais aux tableaux à 2 dimensions je n'avais pas vu ces bêtes là |
Il n'a pas le choix ici puisqu'il doit passer les dimensions du tableau en paramètre. Ta solution l'oblige à figer toutes les dimensions du tableau sauf une.
Marsh Posté le 02-11-2003 à 14:03:58
Ah oui s'il veut que la fonction s'adapte à la taille du tableau il faut utiliser les pointeurs en effet
Mea culpa
Marsh Posté le 02-11-2003 à 22:20:54
meme avec un int **T (et oui, pas int * T)
il peut faire T[i][j]
Marsh Posté le 02-11-2003 à 22:39:00
méaculpa, sans pointeur, il suffit de préciser la structure du tableau;
void afficher(int T[2][3],int l,int L)
Marsh Posté le 02-11-2003 à 22:57:02
bugsan a écrit : méaculpa, sans pointeur, il suffit de préciser la structure du tableau; |
Et dans ce cas, quel est l'interet de passer en paramètre la largeur et la longueur du tableau si la taille de celui-ci est fixée à l'avance ?
Marsh Posté le 08-11-2003 à 12:52:08
sinoc fait comme ca
void afficher(int l,int L, int T[l][L])
Marsh Posté le 08-11-2003 à 13:17:26
darkpotpot a écrit : sinoc fait comme ca |
C'est pas mal ça, je ne connaissais pas cette notation. Depuis quelle version du C on peut faire ça ?
Marsh Posté le 08-11-2003 à 18:17:29
C'est pas un truc du genre void afficher(int T[2][],int l,int L) ? Ai vu qq chose comme ça qq part (FFT je crois, jamais utilisé)... On spécifie la première dim (lignes) pour que le compilo sache comment décaler pour trouver les colonnes.
Marsh Posté le 08-11-2003 à 19:06:55
Kristoph a écrit : |
sait pas depuis quelle version mais je l'utilise en ce moment car le prof veut pas qu'on se serve des pointeurs donc ca marche. le seul truc a faire c'est de declarer le nom de tes lignes et de tes colonnes avant
Marsh Posté le 11-11-2003 à 09:56:02
CARBON_14 a écrit : C'est pas un truc du genre void afficher(int T[2][],int l,int L) ? Ai vu qq chose comme ça qq part (FFT je crois, jamais utilisé)... On spécifie la première dim (lignes) pour que le compilo sache comment décaler pour trouver les colonnes. |
C'est à peu près ce que je voulais dire plus haut
Sauf que come tu spécifies déjà une dimension, t'as soit l soit L à transmettre en paramètre, mais pas les deux je pense ...
Marsh Posté le 27-10-2003 à 19:21:26
bonjour
a tout le monde
bon je vient posé mon petit bug perso sur ce beau forum
et j'espert trouvee quelqun qui poura repondre a ma question
bon j'attack
dabord la source :
/*debut */
#define MAX 100
//fonction afficher le tableau
void afficher(int T[][],int l,int L)
{
int i=0,j=0,c;
while (j<=l){
printf("\n" );
while (i<=L){
c=T[j][i];
printf("%d",c);
i=i+1;
}
printf("\n" );
j=j+1;
}
return;
}
int main(void)
{
int T1[2][3] = {{1,2,3},{1,2,3}};
afficher(T1,3,2);
return 0;
}
/*fin*/
voila alors on me dit a al compilation:
invalid use of array with unspecified bounds ligne 9
cad la ligne ou c marquer:
c=T[j][i];
voilà
bon bin si ya quelqun qui a une idee j'aimerai bien pouvoir compiler ce bordel pour avancer mon bouleau
merci de m'avoir lu meme si vous n'aver pas d'idée c simpas d'essayer..