Vous êtes sur la page 1sur 1

SIM201 - TP5 : Programmation générique

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 :

typedef complex<double> complexe;


q
3) Proposer une méthode pour que l’opérateur | retourne le produit scalaire usuel en réel (U, V ) = i ui vi
q
et retourne le produit hermitien lorque les vecteurs sont complexes (U, V ) = i ui v̄i .
4) Proposer une solution pour que la norme d’un vecteur retourne toujours un réel, que le vecteur soit réel
ou complexe.
5) A priori, la classe vecteur ne supporte pas des opérations mélangent des réels et des complexes. Par
exemple, l’instruction suivante provoquera une erreur de compilation

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 ) ;
};

On cherchera à réutiliser au maximum les fonctionnalités de la classe vecteur. Proposer l’implémentation


des opérateur externes permettant d’afficher la matrice (opérateur <<), de réaliser l’addition et la différence
de deux matrices de mêmes dimensions, le produit et la division par un scalaire ainsi que le produit
matrice×vecteur.

Vous aimerez peut-être aussi