Programmation C++

Master M2 Informatique --- Feuille n° 3

Exercice n° 1

Écrire une classe template MaxPlus paramétrée par un type T. Un objet de type MaxPlus<T> contient une valeur numérique de type T et la classe contient Par ailleurs, on désire que les objets de type MaxPlus<T> se comportent correctement vis-à-vis des flots.

On veut maintenant que le type MaxPlus<T> fournisse une méthode statique get_zero() retournant un objet de valeur -∞. Cette valeur sera en fait représentée par la plus petite valeur représentable dans le type T. On utilisera pour cela la méthode statique min() définie dans la classe template numeric_limits de la stl (header limits).

Exercice n° 2

On rappelle que binomial(n,k) est calculable récursivement selon les formules suivantes: Écrire la classe Binomial de sorte que Binomial<N,K>::val est une constante égale à binomial(n,k).

Écrire un programme binomial.cc de sorte que la ligne g++ -DN=n binomial.cc produise un programme qui affiche binomial(n,k) pour k compris entre 0 et n.

Exercice n° 3

Écrire une fonction paramétrée instance_of retournant un booléen, dont l'argument est une référence constante de type quelconque et telle que instance_of<T>(x) retourne true si et seulement l'objet x est d'un type compatible avec T (pour autant que les mécanismes du C++ permettent d'en décider).