cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 24 juil. 2004 à 18:01
ZogStriP > litt un cours sur les tableaux et tu verra que ce que tu ecris n'a pas de sens, on peut pas affecter un tableau (ce n'est pas une variable)
on ne peut pas non plus retourner un tableau par valeur, seulement son adresse convertie en pointeur, et ta matrice MatriceResultat n'existe pas dans le contexte appelant donc tu dois passer la matrice resultat en paramettre à la fonction
void MultiMatrice(const int Matrice1[][2], const int Matrice2[][2], int MatriceResultat[][2])
{
int i,j,k;
for(i = 0; i < 2; i++)
{
for(j = 0; j < 2; j++)
{
MatriceResultat[i][j] = 0;
for(k = 0; k < 2; k++)
MatriceResultat[i][j] += Matrice1[i][k] * Matrice2[k][j];
}
}
}
glipper > un tableau 2d est une collection d'elements contigus, tu peut tres bien retourner un pointeur dessus (a condition qu'il existe dans le contexte appelant)
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 24 juil. 2004 à 17:49
Hum... en fait je viens de m'apercevoir que renvoyer un pointeur, ca marche bien pour un tableau simple, mais je n'y arrive pas pour un tableau à deux dimenssions...
Ceci dit, je ne vois pas d'autres solutions possibles que les pointeurs.........
Je continu à chercher, et je te dis si j'y arrive :)
++ Glipper
Vous n’avez pas trouvé la réponse que vous recherchez ?
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 25 juil. 2004 à 21:02
euh....un tableau est deja un pointeur. lorsque tu ecris :
void MultiMatrice(const int Matrice1[][2], const int Matrice2[][2], int MatriceResultat[][2])
tu passe deja des références a tes tableaux. effectivement, la solution proposée par djl est la bonne
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 25 juil. 2004 à 21:02
euh....un tableau est deja un pointeur. lorsque tu ecris :
void MultiMatrice(const int Matrice1[][2], const int Matrice2[][2], int MatriceResultat[][2])
tu passe deja des références a tes tableaux. effectivement, la solution proposée par djl est la bonne. sinon utilise des vectors si tu es en c++
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 26 juil. 2004 à 21:23
bon alors je reformule:
quand on ecrit
TYPE fonction (TYPE tableau [])
{
//code
}
on passe la référence du tableau et non pas le talbeau (et effectivement personne ne passe un taleau par reference ou par pointeur, on n'a jamais appris a personne a faire comme ca, cest pas sans raisons....). de meme, lorsque écrit
tableau [i]
le compilteur interprete comme "adresse du premier élément du tableau décalé de i * taille des objets du tableau".
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 26 juil. 2004 à 21:28
aufait pr expliquer un peu l'erreur qu'a commise zogstrip, quand tu retourne "return MatriceResultat[2][2];", tu retourne l'adresse du premier élément de ton tableau, codée sur 4 octets, tu stock cette adresse dans un int puisque ton parametre de retour est un int. donc tu as retournée une adresse stockée dans un int. tu as récupéré l'adresse de ton tableau dans un entier. essaie de reprendre ton code, et de faire
cout << multimatrice (mat1[][], mat2[][]);
tu verras le résultat....
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 26 juil. 2004 à 21:39
tout a fait d'accord. d'ou l'utlité des vectors......et encore plus lorsqu'on manipule du tableau a plusieurs dimensions. dans tous les cas, en cas de manipulation de tableau a passer en parametres, petit conseil, passer la taille du tableau en parametre (si on a fait fonction (type tableau [50]), on peut tres bien ecrire a l'interieur de la fonction un truc genre "cout << tableau [1987]", ca marche tt a fait et ca affiche n'importe quoi....helas on peut pas vraiment proceder comme ca des que le tableau a plus d'une dimension. vive les vectors..........)