Problèmes sur opérations simples sur des matrices
Bonjour à tous,
J'ai fait une classe matrice et j'ai surchargé l'opérateur * afin de multiplier 2 matrices, le voilà :
Code:
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 :
Code:
1 2
| cout<<"m1 * m2 = "<<(m1*m2)<< endl;
cout<<endl;*/ |
Rien ne s'affiche. J'ai essayé plusieurs choses, mais je n'arrive pas à comprendre pourquoi cela ne veut pas marcher !
J'ai fait une surcharge de l'opérateur = :
Code:
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;
} |
et mon constructeur initialise à 0 :
Code:
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;
} |
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.
Merci d'avance pour votre aide.
Ajout des balises [code] par khayyam90