Classe matrice

monphp Messages postés 2 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 4 août 2013 - 19 mai 2012 à 21:01
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 22 mai 2012 à 13:20
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

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
22 mai 2012 à 13:20
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
0
Rejoignez-nous