MULTIPLICATION MATRICES

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 23 janv. 2003 à 09:49
Galett Messages postés 115 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 21 mai 2005 - 27 janv. 2003 à 15:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10321-multiplication-matrices

Galett Messages postés 115 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 21 mai 2005
27 janv. 2003 à 15:27
tiens un compteur de désallocation, c'est pas bête, voilà une info qui pourrait me servir :o)
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
23 janv. 2003 à 16:27
C'est pas récursif clap clap clap :-))
Fais attention au mélange C/C++, bcp de puristes te le reprocheront et ça diminue la lisibilité du code voire même la portabibilité. Comme le dis Kaid révise bien les allocations mémoires. Tout ce qui est alloué à un moment doit être désalloué. Pour t'aider tu peux tout simplement utiliser un compteur d'allocation et un compteur de désallocation qui te permettront de savoir où tu en est.
loraine9999 Messages postés 6 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 23 janvier 2003
23 janv. 2003 à 16:01
ouoauauouaaaaaaaaaaah merci pour tous ces bons conseils ;-)

mon compilateur c'est borland builder C++ version6
on mélange du C et du C++...
cs_nEUrOne Messages postés 41 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 14 avril 2004
23 janv. 2003 à 12:48
en tou cas, c'est bien indenté (emacs il me semble)
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
23 janv. 2003 à 11:31
Pour finir (oui ca fait beaucoup), tu as des fuites mémoire:

1- m1 = (int**)malloc(lignes1 * sizeof(int*)) ;
2- m1[INDEX] = (int*)malloc(colonnes1 * sizeof(int)) ;
3- L'étape qu'il te manque -> libérer les tableaux allouer par 2
4- free(m1);

for(int i=0;i<colonnes1;i++)
free(m1[i]);

free(m1);
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
23 janv. 2003 à 11:13
C'est bien présenté, pour rendre encore plus joli, tu pourrais rappeler la multiplication :
[1 0] [1] [1]
x =
[0 1] [2] [2]

et puis utilise le new[]/delete[]
Pour plus de réutilisation met tout ca dans une classe Matrice et dote la de constructeurs, d'une méthode d'impression,...-)
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
23 janv. 2003 à 10:27
- Et justement dans le cas précédement cité, tu retournes NULL dans la fonction main(), ca marche, mais c'est pas très logique (d'autant que tu retournes aussi 0 en cas de succès).
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
23 janv. 2003 à 10:24
- Pourquoi mélanger du C (malloc() & free()) avec du C++ (cout) ?

- Sinon dans le code suivant, si l'allocation mémoire se passe mal, tu libères un pointeur NULL:

if (!m1) // m1=NULL
{
free(m1) ; // free(NULL);
cout << endl << "erreur d'alloc 1ere matrice!!! " ;
return NULL ;
}
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
23 janv. 2003 à 09:49
C'est quoi ton compilateur ?
Rejoignez-nous