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; }
Expliquer ce que fait le code précédent.
Si nous souhaitons travailler sur des nombres à virgule flottante comme des float
ou des double
, que faudrait-il faire pour avoir une telle fonction ?
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.
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.
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.
''part1.cpp'' Fichier principal contient les fonctions de test et le main.
''find.h'' Définition de la fonction générique de recherche.