OVH Cloud OVH Cloud

Passage de matrice en parametre d'une foction

3 réponses
Avatar
partirensemble
Salut!

Je voudrais passer une matrice carrée de taille variable à une
fonction. Comment dois-je m'y prendre?

ex

f(int **mat, int dim)
{
blah blah
}
int main()
{
int mat[6][6];
f(mat,6);
}

le problème c'est que g++ ne reconnait pas ma matrice comme un int
**?!
je.c@laposte.net

Si vous avez une idée?

3 réponses

Avatar
Falk Tannhäuser
J?r?me wrote:

Salut!

Je voudrais passer une matrice carrée de taille variable à une
fonction. Comment dois-je m'y prendre?


template<typename T, unsigned M, unsigned N>
void f(T (&mat)[M][N])
{
// ...
}

int main()
{
int mat[6][6];
f(mat);
return 0;
}

Sinon il vaut peut-être mieux écrire une classe "Matrix".

Falk

Avatar
Jérôme
OK merci beaucoup j'ai créé un classe matrice comme tu me l'as
conseillé c'est encore plus simple!
Avatar
Horst Kraemer
(J?r?me) wrote:

Salut!

Je voudrais passer une matrice carrée de taille variable à une
fonction. Comment dois-je m'y prendre?

ex

f(int **mat, int dim)
{
blah blah
}
int main()
{
int mat[6][6];
f(mat,6);
}

le problème c'est que g++ ne reconnait pas ma matrice comme un int
**?!


Les types int ** et int [n][n] (int (*) [n]) n'ont aucune relation
entre eux.


Solution laide

void f(int *mat, int dim)
{
/*
au lieu de mat[i][j] il faut écrire
mat[i*dim+j]
*/
}

f((int*)mat,6);

--
Horst

--
Lâche pas la patate!