Table of Contents

TD3 - Partie 1 - Les fonctions génériques

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

''part1.cpp'' Fichier principal contient les fonctions de test et le main.

''find.h'' Définition de la fonction générique de recherche.

Liens vers les éléments syntaxiques C++

Les fonctions surchargées en C++

Les fonctions génériques en C++

Deuxième partie