Classe matrice

Signaler
Messages postés
2
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
4 août 2013
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
slt tt le monde, je suis entrain de réaliser un projet concernant le polymorphisme des matrices et des vecteurs. jé realisé alors une matricecaree qui hérite d'une matrice quelconque.
Mon problème est au niveau du determinant ou plus precisement la fct suppligne parfois elle marche tres tres bien et parfois en entrant la même matrice ca ce bloque.
double MatriceCarree::det() const
{

   MatriceCarree m(l);
   double x=0;

   if(l==1) //final
      return lignes[0][0];

   for(int i=0; i<l; i++)
   {
      m = this->supligne(i,0); //extrait la sous matrice
      x=x+(expo(i)*lignes[i][0]*m.det());
   }
   return x;

}

MatriceCarree MatriceCarree::supligne(int lig, int col) const
{

    int ld = 0,cd=0;
    MatriceCarree dest(l-1);
    for (int L=0; L<l; L++)
    {
        cd = 0; // revient a colone 0
        if(L != lig) // sauf ligne a virer
        {
            for(int C=0; C<l; C++)
            {
                if(C != col) // sauf colone a virer
                {
                    dest.lignes[ld][cd]=lignes[L][C]; // recopie
                    cd++;
                }
            }
            ld++;
        }
    }
    return dest;
}

inline float MatriceCarree::expo(int n) const
{
    if(!(n%2))    { return (1); }
    return (-1);
}



SVP aidez moi je suis perdus même mon prof n'as pas su ou existe l'erreur et je doit rendre mon projet la semaine prochaine

1 réponse

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
Salut,

peut-on voir ton implémentation de la surcharge de l'opérateur d'affectation ?

Certainement un problème dans les lignes :

m = this->supligne(i,0); 
x=x+(expo(i)*lignes[i][0]*m.det());


On dirait qu'il y a beaucoup de copies, pourquoi ne pas renvoyer des références :

MatriceCarre& MatriceCarree::supligne(int,int) const