420KHJ – Généricité (pratique) v. 1,1
Préparé par Patrice Roy pour le Collège Lionel-Groulx Page 1
Généricité (pratique) – Exercices
On a besoin de pratique, à mon humble avis, alors voici quelques opportunités d’approfondir les
idées et les techniques des dernières semaines.
Les exercices qui suivent devraient fonctionner à la fois avec un tableau brut, avec un
std::vector et avec vos propres classes de tableaux. Conséquemment, si vos tableaux ne
sont pas encore correctement écrits, assurez-vous tout d’abord de régler les bogues qui traînent
encore dans vos implémentations.
Dans les consignes qui suivent, la plupart des algorithmes à utiliser se trouvent dans
<algorithm>. Vous devrez, évidemment, lire l’aide en ligne pour bien utiliser chacun de
ces algorithmes.
Pour vous aider à mettre le tout au point, je vous suggère d’écrire une fonction générique
afficher_sequence() recevant une séquence à demi ouverte et en affichant les éléments
un à un, séparés par un blanc et se terminant par un saut de ligne. Cela vous permettra de vérifier
que votre code tient la route.
Écrivez un programme qui :
initialise le générateur de nombres pseudo-aléatoires
(fonction std::srand() de <cstdlib>; vous
voudrez aussi utiliser std::time() de <ctime>
pour choisir une valeur à passer à std::srand());
Ce programme ne contiendra aucune
répétitive, que des algorithmes standards et des
foncteurs. Si vous êtes habiles, le programme
sera peut-être même plus court (si on ne
considère pas les directives #include et
les clauses using) que les consignes
expliquant comment le rédiger.
déclare un tableau brut de int d’une capacité de N éléments (N est une constante entière
strictement positive… Disons 20, mais faut que votre code fonctionne avec des valeurs paire
ou impaire alors prenez soin de bien le tester);
dans ce tableau, pour chaque indice i, initialisez l’élément à la valeur i+1. Pour ce faire,
utilisez l’algorithme std::generate() et un foncteur;
brassez ce tableau pour que les éléments se retrouvent à des positions pseudo-aléatoires. Pour
ce faire, utilisez l’algorithme std::random_shuffle();
déclare un std::vector<int> qui soit une copie élément par élément du tableau brut.
Utilisez pour ce faire le constructeur de séquence du std::vector<int> en question;
déclare un tableau de int de taille fixe et connue à la construction qui soit une copie
élément par élément du tableau brut. Utilisez pour ce faire le constructeur de séquence du
tableau en question;
déclare un tableau de int de taille fixe et connue à la compilation qui soit une copie
élément par élément du tableau brut. Utilisez pour ce faire le constructeur de séquence du
tableau en question;
déclare un tableau dynamique de int qui soit une copie élément par élément du tableau
brut. Utilisez pour ce faire le constructeur de séquence du tableau en question;
trouve la position de l’élément de valeur 3 dans le tableau brut et l’affiche à la console (on
veut l’indice dans le tableau, donc une valeur dans l’intervalle (0..N( inclusivement, pas
l’adresse de l’élément). Pour ce faire, utilisez l’algorithme std::find(). Faites de même
avec le std::vector<int> et avec chacun de vos tableaux, et vérifiez que vous avez
les mêmes réponses dans chaque cas;