pabreto
Messages postés2Date d'inscriptionjeudi 17 janvier 2008StatutMembreDernière intervention19 janvier 2008
-
19 janv. 2008 à 18:42
maymouna2008
Messages postés6Date d'inscriptionmardi 8 avril 2008StatutMembreDernière intervention12 avril 2008
-
12 avril 2008 à 19:36
bonjour!
je dois écrire le matrice.c d'une classe de matrice à partir d'un matrice.h que l'on me donne et que je n'a pas le droit de modifier.
voici mes fichiers:
Matrice::Matrice(unsigned int _nx,unsigned int _ny)
{
nx=_nx;
ny=_ny;
int dim = _nx * _ny;
p=new double[dim];
}
//remplissage
Matrice::Matrice(const Matrice& a)
{
nx=a.nx;
ny=a.ny;
int dim=nx*ny;
p=new double[dim];
for(int i=0;i<nx;i++)
for(int j=0;j<ny;j++)
p[nx*i+j]=a(i,j);
}
//effacage
Matrice::~Matrice(){delete p; nx=0;ny=0;}
//operateur de recopie
Matrice& Matrice::operator = (const Matrice& a)
{
delete[] p;
nx=a.nx;
ny=a.ny;
int dim=nx*ny;
p=new double[dim];
for(int i=0;i<nx;i++)
for(int j=0;j<ny;j++)
p[nx*i+j]=a(i,j);
return *this;
}
//somme
Matrice operator + (const Matrice& a, const Matrice& b)
{
unsigned int na,ma,nb,mb;
na=a.nb_lines();
ma=a.nb_columns();
nb=b.nb_lines();
mb=b.nb_columns();
Matrice somme(na,mb);
for(int i=0;i<na;i++)
for(int j=0;j<mb;j++)
{
somme(i,j)=a(i,j)+b(i,j);
}
return somme;
}
//difference
Matrice operator - (const Matrice& a, const Matrice& b)
{
unsigned int na,ma,nb,mb;
na=a.nb_lines();
ma=a.nb_columns();
nb=b.nb_lines();
mb=b.nb_columns();
Matrice difference(na,ma);
for(int i=0;i<na;i++)
for(int j=0;j<ma;j++)
{
difference(i,j)=a(i,j)-b(i,j);
}
return difference;
}
//produit matriciel
Matrice operator * (const Matrice& a, const Matrice& b)
{
unsigned int na,ma,nb,mb;
na=a.nb_lines();
ma=a.nb_columns();
nb=b.nb_lines();
mb=b.nb_columns();
Matrice produit(na,mb);
for(int i=0;i<na;i++)
for(int j=0;j<mb;j++)
{
for(int k=0;k<ma;k++)
produit(i,j)+=a(i,k)*b(k,j);
}
return produit;
}
//produit par un scalaire
Matrice operator * (double r,const Matrice& a)
{
unsigned int na,ma;
na=a.nb_lines();
ma=a.nb_columns();
Matrice produit(na,ma);
for(int i=0;i<na;i++)
for(int j=0;j<ma;j++)
{
produit(i,j)=r*a(i,j);
}
return produit;
}
//produit matrice/vecteur
Vecteur operator * (const Matrice& a, const Vecteur& v)
{
unsigned int na,ma;
na=a.nb_lines();
ma=a.nb_columns();
Vecteur produit(ma);
for(int i=0;i<na;i++)
for(int k=0;k<ma;k++)
{
produit(i)+=a(i,k)*v(k);
}
return produit;
}
mais j'ai un problème à la compilation, il me dit que dans toutes mes surdéfinitions d'opérateurs, " 'const class Matrice' has no member named 'nb_lines' " et la même chose pour le nombre de collonnes.