TD 16 C++: Révisions


Exercice 0: QCM (révisions)

Faites ce QCM: http://goo.gl/forms/MtzwBmXsI2.
Vous avez 60 minutes. Il sera noté au cours de la séance, mais seulement à titre indicatif: la note ne comptera pas.

Voir les Résultats 2018 du QCM


Exercice 1: Programmation (révisions)

  1. Écrire dans un fichier 1.1.cc une fonction RevString qui inverse les caractères d'une chaîne de caractères, eg. "hello""olleh". La signature de la fonction devra être exactement:
    void RevString(string* s);
    Vous devrez listez tous les #include et using nécessaires.

    Testez votre code:
    rm 1.tar.gz; wget --no-cache http://fabien.viger.free.fr/cpp/td16/1.tar.gz
    tar xf 1.tar.gz
    make 1.1
    RENDU: 1.1.cc

  2. Écrire dans un fichier 1.2.h une fonction générique GetSecond() qui prend un const vector& en argument, contenant un type quelconque T, et renvoie l'index du 2ème plus grand élément (le type de retour est donc int).

    Exemple: GetSecond({3, 5, 2, 4, 0, 6}) doit renvoyer 1 (l'index de 5).

    La fonction devra fonctionner en O(N), où N est la taille du vecteur. Vous pourrez présupposer que le vecteur donné en entrée contient au moins 2 éléments.

    Pour tester: make 1.2

    RENDU: 1.2.h

  3. Écrire dans un fichier 1.3.h une fonction générique GetKth() qui prend un const vector& en argument, et un entier K, et renvoie le K-ième plus grand élément du vecteur (indexé à 0: pour le plus grand élement on utiliserait K=0, pour le 2ème plus grand on utiliserait K=1).
    La syntaxe d'un appel de cette fonction serait par exemple:
    vector x = {"Hello", "Beautiful", "World"};
    int idx = GetKth(x, 1);  // We expect idx = 0.
    La fonction doit fonctionner en O(N.log(K)), où N est la taille du vecteur. Ou mieux.

    Pour tester: make 1.3 Note: Le test de performance devrait tourner en a peu près 1s.

    RENDU: 1.3.h