memoireph
Messages postés4Date d'inscriptionmercredi 20 juillet 2011StatutMembreDernière intervention20 mai 2012
-
20 mai 2012 à 22:05
livevlad
Messages postés8Date d'inscriptionvendredi 4 février 2011StatutMembreDernière intervention25 septembre 2012
-
25 sept. 2012 à 14:24
salut tous le monde
je sollicite votre aide sur un problème
voilà,j'ai deux classe vecteur et Matrice que je doit faire avec des opération élémentaire telle que la somme la produit..
notre professeur nous demande que les matrices et vecteurs soient génériques et de faire apparaître l'héritage entre vecteur et matrice:
voilà ce que j'ai fait
template<typename T> class Vector {
private:
int num;
protected:
T* pdata;
public:
Vector(); //constructeur par defaut
Vector(int Num); // constructeur qui admet des paramètre
~Vector();
T& operator[] (int i) const; //surcharge de l'opérateur[]
void saisir(); // fonction saisir
void afficher();
...
};
// ici matrice hérite de vecteur et ça mon problème je sais pas si le syntaxe est //coorecte
template <typename T>
class Matrix:public Vector<T>{
unsigned int n;
typedef T* pdata;
pdata * ligne;
public:
Matrix();
Matrix(int n);
void readMatrix();
void printMatrix();
Matrix<T> operator +(const Matrix<T> & operande2);
};
template <typename T> Matrix<T>::Matrix(int n1):Vector<T>(3)
{
n=n1;
ligne=new T*[n1];
}
template <typename T>void Matrix<T>::readMatrix(){
for(int i=0;i<n;i++)
{
saisir();//comme matrice hérite de vecteur je peux utiliser la fonction saisir prédéfinie dans la classe vecteur
}
}
template <typename T> void Matrix<T>::printMatrix(){
for(int i=0; i<n; i++)
{
for (int j=0; j<m; j++){
cout<< ligne[i][j]<<" ";}
cout <<" " << endl;}
}
mon problème c'est que je sais pas les fonction et les attribut que je doit réutiliser ainsi que dans la syntaxe de l'héritage que j'ai fait je vous serai très reconnaissant de m'indiquer le bout de fil
cordialement
livevlad
Messages postés8Date d'inscriptionvendredi 4 février 2011StatutMembreDernière intervention25 septembre 2012 25 sept. 2012 à 14:24
Salut
En fait je pense que tu doit juste ajouter un attribut dimensions qui contiendrai les dimensions de la matrice et pour le construire tu utilisera le constructeur de la classe mère vecteur avec pour taille le produit des dimensions.
Par exemple pour une matice n x m tu fera
Matrice(int n, int m):Vecteur(n*m)
{
this.n = n; // enregistre les dimensions
this.m = m;
}
Donc pour accéder à l'élément [a][b] il suffit de retourner pdata[n*a+b] par exemple.
Tu peut donc garder les fonctions de somme (somme des élément un par un comme pour un vecteur),etc... Par contre les fonctions de produits seront peut-être à refaire, à toi de juger selon tes connaissances mathématiques.
Après à toi de voir mais voilà comment tu devrais construire ta classe.