Académique Documents
Professionnel Documents
Culture Documents
E. Lunéville
1) En repartant d’une classe vecteur développée pour des vecteurs de réels (des fichiers exemples vecteur.hpp
et vecteur.cpp sont disponibles sur eCampus), la transformer afin qu’elle devienne une classe générique
vecteur<T>. On écrira l’implémentation des fonctions membre de la classe template dans le fichier d’entête.
2) Valider votre programmation en testant les différentes fonctionnalités sur des vecteurs réels (float ou
double) et sur des vecteurs complexes (complex<float> ou complex<double>). Afin d’alléger l’écriture
on pourra utiliser l’alias :
vecteur<complexe> Z = vecteur<double>(3,1);
Proposer des modifications pour autoriser les fonctions membre des classes "modèle" complexe à prendre
des objets de type réels (float, double,...).
6) * Écrire une classe générique matrice héritant de la classe générique vecteur permettant de gérer des
matrices carrées d’ordre n :
template<typename T> c l a s s m a t r i c e : public v e c t e u r <T>
{
public :
int d ;
m a t r i c e ( i n t di , const T& v0=T ( ) ) ;
T& operator ( ) ( i n t i , i n t j ) ;
const T& operator ( ) ( i n t i , i n t j ) const ;
m a t r i c e <T>& operator+=(const m a t r i c e <T>& M) ;
m a t r i c e <T>& operator−=(const m a t r i c e <T>& M) ;
m a t r i c e <T>& operator∗=( const T& s ) ;
m a t r i c e <T>& operator/=( const T& s ) ;
};