Académique Documents
Professionnel Documents
Culture Documents
3. Donner un exemple d’une classe de la STL (Standard Template Library) pour laquelle les symboles ++ et --
sont définis. Ecrire un court exemple qui illustre l’utilisation de ++ avec un objet de cette classe.
3. Surcharger l’opérateur [] qui renvoie une référence suite & initialisée par l’objet courant et qui a le comporte-
ment suivant :
– si l’argument k est plus grand que n on appelle la méthode next() jusqu’en k à partir de l’état courant,
– si l’argument k est plus petit que n on appelle la méthode next() jusqu’en k à partir de l’état initial.
4. Surcharger l’opérateur << qui permet l’affichage d’un objet d’une classe dérivée de suite. L’affichage sera
n x_n
Préciser le fichier d’en-tête (header) à inclure.
n
X (−1)k
On considère la suite des sommes partielles de la série de Leibniz sn = .
2k + 1
k=0
5. Ecrire une classe leibniz dérivée de suite qui code la suite (sn )n≥0 avec la condition initiale s0 = 1. La méthode
next() doit être redéfinie dans cette classe pour coder le passage de l’état (n, sn ) à l’état (n + 1, sn+1 ).
6. Ecrire un programme de test complet qui affiche les 10 premières itérations de la suite (sn )n≥0 .
On rappelle que la suite (sn )n≥0 converge vers π4 . La convergence est lente et une façon d’accélerer la convergence
est de mettre en œuvre le procédé Delta-2 de Aitken.
Le procédé Delta-2 est un procédé d’accélération de convergence (sous certaines conditions) qui associe à une
suite (xn )n≥0 , la suite (yn )n≥0 définie par
(xn+1 − xn )2
∀n ≥ 0, yn = xn − .
xn − 2xn+1 + xn+2
1
7. Définir une classe delta2 dérivée de suite qui permet d’implémenter le procédé Delta-2. Le constructeur devra
prendre pour argument une référence sur une suite.
Par exemple, pour manipuler la suite (yn )n≥0 obtenue comme procédé Delta-2 de la suite (sn )n≥0 on fera les
appels suivants
leibniz s (1 , 0);
2 delta2 y ( s );
8. Ecrire une fonction globale temps_convergence qui prend comme arguments une suite (xn )n≥0 et un paramètre
ε > 0, et qui renvoie le premier instant n > 0 tel que |xn − xn−1 | < ε (indiquer les modifications éventuelles à
faire sur la classe suite). Cette fonction utilise le polymorphisme dynamique et un appel sera
leibniz s (1 , 0);
2 int n = temps_convergence (s , 1e -6);
9. Ecrire un modèle de fonction (template) temps_convergence<T> qui permette un appel similaire à celui de la
question précédente.
1. Définissez une structure récursive struct element qui codera un élément de la pile (de double).
Redéfinir ce type en elt (pour faciliter l’écriture de la suite).
3. Définir une fonction cree_pile qui crée une pile vide (i.e. nb_elt = 0 et sommet = NULL) et qui renvoie l’adresse
de cette pile vide (un pointeur sur le type pile) si la création est réussie et qui renvoie NULL sinon.
4. Ecrire une fonction empile (ou push) qui ajoute un élément au sommet de la pile. Cette fonction doit prendre 2
arguments et renvoyer un entier : 1 si l’ajout est réussi et 0 sinon.
Ecrire une fonction depile (ou pop) qui renvoie la valeur du premier élément de la pile avant de le détruire.
5. En utilisant une boucle for, écrire une fonction vide qui détruit une pile (destruction de tous les éléments).