This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
in204:tds:sujets:td3:part1 [2020/09/23 06:37] bmonsuez |
in204:tds:sujets:td3:part1 [2022/11/18 10:49] (current) |
||
---|---|---|---|
Line 144: | Line 144: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp 2> | + | |
Nous proposons plusieurs solutions au problème. Première approche, nous supprimons l'ensemble des valeurs dans le vecteur ''theVector'' en effectuant un appel à la fonction ''clear'' de l'object ''std::vector'' et nous ajoutons à la fin du vecteur, un par un les valeurs aléatoires que nous tirons en appelant la fonction ''push_back''. Suivez [[http://www.cplusplus.com/reference/vector/vector/|le lien]] pour plus d'informations relativement aux méthodes de la classe [[http://www.cplusplus.com/reference/vector/vector/|''std::vector'']]. | Nous proposons plusieurs solutions au problème. Première approche, nous supprimons l'ensemble des valeurs dans le vecteur ''theVector'' en effectuant un appel à la fonction ''clear'' de l'object ''std::vector'' et nous ajoutons à la fin du vecteur, un par un les valeurs aléatoires que nous tirons en appelant la fonction ''push_back''. Suivez [[http://www.cplusplus.com/reference/vector/vector/|le lien]] pour plus d'informations relativement aux méthodes de la classe [[http://www.cplusplus.com/reference/vector/vector/|''std::vector'']]. | ||
Line 295: | Line 295: | ||
</hidden> | </hidden> | ||
- | </nodisp> | + | |
==== Question n°1.2 === | ==== Question n°1.2 === | ||
Line 307: | Line 307: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp 2> | + | |
Votre fonction ressemblera à la fonction suivante : | Votre fonction ressemblera à la fonction suivante : | ||
Line 328: | Line 328: | ||
</code> | </code> | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||
Line 356: | Line 356: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp 2> | + | |
Il s'agit d'un tri par insertion. Nous pouvons envisager d'implanter d'autre tri, comme un tri par bulles par exemple. | Il s'agit d'un tri par insertion. Nous pouvons envisager d'implanter d'autre tri, comme un tri par bulles par exemple. | ||
Line 426: | Line 426: | ||
} | } | ||
</code> | </code> | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||
Line 435: | Line 435: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp> | + | |
Il suffit d'écrire dans votre fnction ''main'' le code suivant : | Il suffit d'écrire dans votre fnction ''main'' le code suivant : | ||
Line 461: | Line 461: | ||
Nous avons dans le code précédent défini une portée débutant par ''{ using namespace monomorphic;''. Ceci indique que dans cette portée qui se termine avec le ''}'' correspondant nous importons l'ensemble des fonctions contenues dans l'espace de nom ''monomorphic''. Cette importation permet de ne pas avoir à écrire le préfix ''monomorphic::'' devant les fonctions ''populate_with_randoms'', ''print_vector'' et ''simple_sort''. | Nous avons dans le code précédent défini une portée débutant par ''{ using namespace monomorphic;''. Ceci indique que dans cette portée qui se termine avec le ''}'' correspondant nous importons l'ensemble des fonctions contenues dans l'espace de nom ''monomorphic''. Cette importation permet de ne pas avoir à écrire le préfix ''monomorphic::'' devant les fonctions ''populate_with_randoms'', ''print_vector'' et ''simple_sort''. | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||
Line 494: | Line 494: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp 2> | + | |
Pour une fonction (resp. une classe) qui est définie par un patron de fonction (resp. de classe), la génération du code s'effectuant au moment de l'appel de la fonction (resp. de la création d'un objet). Pour que le compilateur soit en mesure d'effectuer cette génération de code, il est nécessaire que le code soit disponible, cela signifie que le code soit présent dans le fichier qui sera inclut. | Pour une fonction (resp. une classe) qui est définie par un patron de fonction (resp. de classe), la génération du code s'effectuant au moment de l'appel de la fonction (resp. de la création d'un objet). Pour que le compilateur soit en mesure d'effectuer cette génération de code, il est nécessaire que le code soit disponible, cela signifie que le code soit présent dans le fichier qui sera inclut. | ||
Line 566: | Line 566: | ||
</code> | </code> | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||
Line 574: | Line 574: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp> | + | |
Nous nous restreignons pour l'instant à des types dénotant des valeurs numériques et supportant nativement une conversion soit implicite soit explicite d'un type entier supporté par le générateur de nombre aléatoire et le type des valeurs stockées dans le tableau dynamique. | Nous nous restreignons pour l'instant à des types dénotant des valeurs numériques et supportant nativement une conversion soit implicite soit explicite d'un type entier supporté par le générateur de nombre aléatoire et le type des valeurs stockées dans le tableau dynamique. | ||
Line 698: | Line 698: | ||
} | } | ||
</code> | </code> | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||
Line 706: | Line 706: | ||
<hidden Correction> | <hidden Correction> | ||
- | <nodisp 2> | + | |
Vous créez une fonction ''main'' pour appeller les fonctions précédentes pour différents types. Dans l'exemple suivant qui est proposé, nous testons les fonctions génériques pour les types ''int'', ''float'', ''char''. Vous pouvez tester avec d'autres types supportant la conversion d'une valeur numérique vers le type ''T''. | Vous créez une fonction ''main'' pour appeller les fonctions précédentes pour différents types. Dans l'exemple suivant qui est proposé, nous testons les fonctions génériques pour les types ''int'', ''float'', ''char''. Vous pouvez tester avec d'autres types supportant la conversion d'une valeur numérique vers le type ''T''. | ||
Line 744: | Line 744: | ||
Pour les types ''int'' et ''float'', le comportement est équivalent à celui des fonctions monomorphiques puisque notre implantation du générateur de nombres aléatoires génère des entiers entre les valeurs minimales et maximales. Lors de l'affichage des valeurs dans le vecteur, que le type soit ''int'' ou ''float'', les valeurs sont des valeurs entières. Cependant dans le dernier cas, nous manipulons des caractères et plus exactement le code ASCII des caractères. Nous générons les codes aléatoirements entre 'A' et 'Z', quand la fonction ''print_vector'' affiche les valeurs, elle affiche le caractère correspondant au code ASCII situé entre la valeur représentant 'A' et la valeur représentant 'Z'. En conséquence de quoi, elle affiche un caractère supérieur ou égal à 'A' et inférieur ou égal à 'Z'. | Pour les types ''int'' et ''float'', le comportement est équivalent à celui des fonctions monomorphiques puisque notre implantation du générateur de nombres aléatoires génère des entiers entre les valeurs minimales et maximales. Lors de l'affichage des valeurs dans le vecteur, que le type soit ''int'' ou ''float'', les valeurs sont des valeurs entières. Cependant dans le dernier cas, nous manipulons des caractères et plus exactement le code ASCII des caractères. Nous générons les codes aléatoirements entre 'A' et 'Z', quand la fonction ''print_vector'' affiche les valeurs, elle affiche le caractère correspondant au code ASCII situé entre la valeur représentant 'A' et la valeur représentant 'Z'. En conséquence de quoi, elle affiche un caractère supérieur ou égal à 'A' et inférieur ou égal à 'Z'. | ||
- | </nodisp> | + | |
</hidden> | </hidden> | ||