This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
in202:seance_3:td3:part_i [2021/04/06 11:08] bmonsuez created |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== TD3 - Partie 1 - Les fonctions génériques ====== | ||
| - | |||
| - | [[..:td3|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. | ||
| - | |||
| - | <code cpp> | ||
| - | int find(const int* theArray, int theArrayLength, int theValue) | ||
| - | { | ||
| - | for(int index = 0; index < theArrayLength; index ++) | ||
| - | { | ||
| - | if(theArray[index] == theValue) | ||
| - | return index; | ||
| - | } | ||
| - | return -1; | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | ==== 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 : | ||
| - | <code cpp> | ||
| - | |||
| - | </code> | ||
| - | |||
| - | Vérifier que l'implantation ''générique'' fonctionne correctement. | ||
| - | |||
| - | ==== Question 1.5 ==== | ||
| - | |||
| - | Nous aimerions introduire un type point ainsi qu'un tableau de point dont les coordonnées sont entières. | ||
| - | |||
| - | <code cpp> | ||
| - | 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) }; | ||
| - | |||
| - | </code> | ||
| - | |||
| - | Tester si la fonction ''find'' précédemment définie fonctionne pour rechercher par exemple : ''Point origin = {0, 0}''. | ||
| - | |||
| - | Expliquer le résultat. | ||