Une fonction qui retourne une matrice

maboush Messages postés 3 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 3 avril 2007 - 3 avril 2007 à 15:07
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 4 avril 2007 à 09:38
Bonjour à tous,

Est ce que quelqu'un pourrais me monter un exemple d'une fonction qui retourne une matrice( une matrice de double par exemple ) et si elle sera de taille indeterminée c'est ce que je cherche.

merci d'avance pour celui ou celle qui s'engage à m'aider et pardon si c une kestion idiote ,en fete je suis pas en fillière informatique mais je m'en sert pour des calculs en électronique.

5 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:06
Salut:

double ** fonction (int n, int m) {
    double ** array = new double * [n];
   
    for (int i = 0; i < n; ++i)
       array [i] = new double [m];

    for (int i = 0; i < n; i++)
       for (int j = 0; j < m; ++j)
          array [i][j] = 0.0d;
}

double ** d = fonction (4, 4);



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:09
Salut:

Sans oublier le return array à la fin de la fonction.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
maboush Messages postés 3 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 22:16
merci A.B. ca tourne très bien ,exactement ce que je voulais.

je savais pas qu'en C++ on reseve de la mémoire comme ca facilement.

merci.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
3 avril 2007 à 23:24
Ce que tu veux donc, c'est un allocateur de pointeurs de pointeurs en C (car le thème est bien dans la section C) ? Ce que propose O.D. est en C++ (les new). Évidament, on aurait aucun problème à viré tout ça en C standard mais il existe une méthode beaucoup plus rapide que d'allouer séparément la mémoire pour chaque pointeur:
http://www.codyx.org/snippet_allocateur-pointeur-pointeurs_293.aspx

Simple à utiliser. Disons que tu désire 4 pointeurs contenant chacun 25 double:
double **pp = (double**)malloc2d(4, 25*sizeof(double));
Quand tu as terminé, un simple free suffis pour effacer toute la mémoire:
free(pp);
C++ (@++)
0

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

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
4 avril 2007 à 09:38
Salut:



Surtout il ne faut pas oublier de libérer l'espace mémoire réservé.




________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Rejoignez-nous