de admin » Jeu Avr 15, 2010 11:50 am
- Code: Tout sélectionner
#include <cstdlib>
#include <iostream>
using namespace std;
class Matrice {
double donnees[3][3];
c
public:
Matrice();
double& operator()(int i,int j){
return donnees[i][j];
}
Matrice operator*(Matrice M);
Matrice operator+(Matrice M);
// Fonction transposée
Matrice & transpose() {
double tmp;
int n=3;
for (int i=0 ; i<n-1 ; i++)
for (int j=i+1 ; j<n ; j++) {
tmp = donnees[i][j];
donnees[i][j] = donnees[j][i];
donnees[j][i] = donnees[i][j];
}
return *this;
}
// Fonction trace
double trace() {
double z;
int n=3;
for (int i=0 ; i<n ; i++)
z += donnees[i][i];
return z;
}
};
Matrice::Matrice(){
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
donnees[i][j]=0;
}
Matrice Matrice::operator*(Matrice M){
Matrice R;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
for (int k=0;k<3;k++)
R(i,j)+=donnees[i][k]* M(k,j) ;
return R;
}
Matrice Matrice::operator+(Matrice M){
Matrice R;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
R(i,j)+=donnees[i][j]+ M(i,j) ;
return R;
}
ostream & operator<<(ostream &f, Matrice a) {
for (int i=0 ; i<3 ; i++) {
for (int j=0 ; j<3 ; j++)
f << " |"<< a(i,j) ;
f << " |"<< endl;
}
return f;
}
// opérateur de flux entrant
istream & operator>>(istream &f, Matrice& a) {
for (int i=0 ; i<3 ; i++)
for (int j=0 ; j<3 ; j++){
cout << "Matrice["<<i<<","<<j<<"]=";
f >> a(i,j);
cout << endl;}
return f;
}
int main()
{ Matrice M1,M2,M3;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
M1(i,j)=i==j ? 5:0;
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
M2(i,j)=i==j ? 2:0;
cin>>M1;
cin>>M2;
M3=M1+M2;
cout << M3;
system("PAUSE");
return EXIT_SUCCESS;
}
-
admin
- Administrateur
-
- Messages: 50
- Inscription: Dim Nov 21, 2004 2:23 am
Retourner vers Langage C++
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités