====== TD3 - Partie 1 - Les fonctions génériques ====== [[..:td_3|Sujet complet]] ===== Question 1 ===== Nous considérons la fonction ''find'' suivante qui recheche si un élément est présent dans un élément dans un tableau. int find(const int* theArray, int theArrayLength, int theValue) { for(int index = 0; index < theArrayLength; index ++) { if(theArray[index] == theValue) return index; } return -1; } ==== Question 1.1 ==== Expliquer ce que fait le code précédent. ==== Question 1.2 ==== Si nous souhaitons travailler sur des nombres à virgule flottante comme des ''float'' ou des ''double'', que faudrait-il faire pour avoir une telle fonction ? ==== Question 1.3 ==== Proposer une implantation ''générique'' de la fonction ''find'' qui permette d'écrire un seul code qui fonctionne à la fois avec des types dénotant des valeurs entières mais aussi des nombres à virgule flottante. ==== Question 1.4 ==== Nous aimerions tester la fonction sur les tableaux suivants : int arrayOfIntegers[8] = {2, 4, 3, 7, 1, 8, 9, 5 }; float arrayOfFloats[6] = {1.3, 3.4, 2.3, 4.7, 1.9, 7.2 }; Vérifier que l'implantation "générique" fonctionne correctement en recherchant un entier ou un nombre à virgule flottante dans le tableau en question. ==== Question 1.5 ==== Nous aimerions introduire un type point ainsi qu'un tableau de point dont les coordonnées sont entières. struct Point { private: int m_x; int m_y; public: Point(): m_x(0), m_y(0) {} Point(int x) : m_x(x), m_y(0) {} Point(int x, int y) : m_x(x), m_y(y) {} int x() const { return m_x; } int y() const { return m_y; } }; Point arrayOfPoints[4] = { Point(2,3), Point(4,5), Point(0,0), Point(7, 8) }; Tester si la fonction ''find'' précédemment définie fonctionne pour rechercher par exemple : ''Point origin = {0, 0}''. Expliquer le résultat. ==== Code présenté pendant le cours ==== {{https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/td3/part1/part1.cpp|''part1.cpp''}} Fichier principal contient les fonctions de test et le main. {{https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/td3/part1/find.h|''find.h''}} Définition de la fonction générique de recherche. ==== Liens vers les éléments syntaxiques C++ ==== [[cpp:syntax:functions:overload|Les fonctions surchargées en C++]] [[cpp:syntax:functions:generic|Les fonctions génériques en C++]] ===== Navigation ===== [[.:part_ii|Deuxième partie]]