Bonjour � tous,
J'ai fait une classe matrice et j'ai surcharg� l'op�rateur * afin de multiplier 2 matrices, le voil� :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 matrice matrice::operator*(const matrice &m1) { matrice result(ligne,m1.colonne); if(colonne == m1.ligne) // si nb colonnes = nb lignes de l'autre matrice { for(int i=0;i<ligne;i++) //pour chaque ligne { for(int j=0;j<m1.colonne;j++) // pour chaque colonne { for(int k=0;k<colonne;k++) // produit scalaire result.mat[i][j] += mat[i][k]*m1.mat[k][j]; } } } else { cout<<"Matrices incompatibles,operation impossible !"<<endl; } return result; }
J'ai �galement surcharg� l'op�rateur << d'affichage qui marche tr�s bien (je l'ai test�), mais quand je fais :
Rien ne s'affiche. J'ai essay� plusieurs choses, mais je n'arrive pas � comprendre pourquoi cela ne veut pas marcher !
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 cout<<"m1 * m2 = "<<(m1*m2)<< endl; cout<<endl;*/
J'ai fait une surcharge de l'op�rateur = :
et mon constructeur initialise � 0 :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 matrice &matrice::operator=(matrice &m1) // Affectation d'une matrice à une autre { int i,j; if(&m1 != this) { for(i=0;i<ligne;i++) { for(j=0;j<colonne;j++) { mat[i][j] = m1.mat[i][j]; } } } else { cout << "(matrice) Erreur d\'affectation !" << endl; } return *this; }
mais ce qui est bizare c'est que quand je fais un affichage dans ma fonction * juste avant le return, �a me met bien la matrice attendue.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 matrice::matrice(int lig, int col) // constructeur { for (int i=0;i<lig;i++) { for (int j=0;j<col;j++) { mat[i][j]=0; } } ligne = lig; colonne = col; }
Merci d'avance pour votre aide.
Ajout des balises [code] par khayyam90
Partager