UdMHaut
UdMBAS

IFT1169
Programmation Avancée en C++

Département d'informatique et de recherche opérationnelle

Direction de l'enseignement de service en informatique
 

Image C++
 
Automne 2024

Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Cours
après Cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Sessions antérieures

  Démonstration #8  
 
Dernière mise à jour : mercredi 11 septembre 2024 10:52:21
 


Buts:

  • [Fonctions Génériques].

  • Q1: Étant donné la fonction:

    float RacineCarree(float w) {
    // calcule la racine carrée avec sqrt, et retourne le résultat.
    }

    Écrire le prototype de la fonction générique (Template) RacineCarree permettant de traiter les combinaisons suivantes:

    Type en Argument
    Type de retour
    int
    int
    float
    float
    float
    double
    int
    float
    int
    float
    double
    float
  • Q2: En tenant compte de la fonction main du programme suivant 1169demo08exo2.cpp, écrire la fonction générique conversion quipermet de convertir un caractère (char) en un entier (int), convertir un réel (double) en un entier (int) et convertir un entier (int) en un réel (double).
  • Q3: Écrire une fonction générique (template) qui accepte deux arguments du type T et qui retourne un booléen qui prend la valeur:

    • vraie si le premier argument est différent du second,
    • faux dans le cas contraire.

    Cette fonction générique permet-elle de traiter correctement le cas où T est du type char*? Dans le cas où elle ne peut pas traiter correctement le type char*, écrivez une fonction spécifiquement pour ce cas.

  • Q4: Cet exercice à pour but de vous faire programmer une méthode de tri. L'algorithme que vous devez programmer triera les éléments d'un tableau dans un ordre décroissant. Pour chaque position du tableau, vous devez exécuter les deux opérations suivantes:
    • 1- la recherche dans le tableau de l'élément le plus grand (emax),
    • 2- la permutation de emax avec l'élément pointé par la position courante.

    Soit le tableau tab des entiers contenant ce qui suit: int tab[5] = {7,6,8,2,5};

    La table suivante illustre le fonctionnement de ce tri pour le tableau tab

    tab
    position
    emax
    7 6 8 2 5
    0
    8
    8 6 7 2 5
    1
    7
    8 7 6 2 5
    2
    6
    8 7 6 2 5
    3
    5
    8 7 6 5 2
    4
    2

    Dans la colonne tab, les éléments en caractères gras, représentent les éléments déjà triée.

    résultat du tri: {8,7,6,5,2}

    Question -1-

    Écrire une fonction permettant de trier un tableau d'entiers tab de dimension taille, en utilisant pour cela ces consignes de programmation:

    • -1- vous devez utiliser l'algorithme de tri précédemment expliqué.
    • -2- vous ne devez pas utiliser d'autre tableau que le tableau original pour réaliser le tri.
    • -3- vous pouvez si vous le souhaiter découper votre code en plusieurs fonctions.
    • -4- vous ne devez pas utiliser les STL.

    Question -2-

    Modifier votre fonction afin de permettre de trier aussi bien le type int, le type char et le type string.

    Question -3-

    Modifier votre fonction de tri afin de permettre de trier le type char*. À titre d'exemple d'un tableau char*:

    char* tab[7] = {"safran", "voile", "foc","gouvernail", "catamaran", "coque", "Hobie Cat"};

    Question -4-

    Écrire la classe tableau, qui contient:

    • membres données:
      • taille // un entier, taille du tableau tab
      • tab // un tableau du type T, qui peut être un int, char, char*, string.
    • membres fonctions:
      • constructeurs+destructeur etc.
      • les fonctions de tri
      • operateur de <<

       


[top]


dift1169@iro.umontreal.ca