This is an old revision of the document!
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 :
Vérifier que l'implantation générique
fonctionne correctement.
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[] = { 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.