La classe Matrice

La classe Matrice

Messagede 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

cron