TD 3: Pointeurs, Tableaux

Rappels

Exercice 1: Pointeurs, tableaux, algorithmes

  1. Étant donné le fichier 1.1.cc suivant:
    #include <iostream>
    using namespace std;
    
    // Ne touchez pas à cette fonction! Utilisez-là telle qu'elle est.
    void GetDate(int* year, int* month, int* day) {
      *year = 2015;
      *month = 9;
      *day = 23;
    }
    
    int main() {
      // TODO: Utilisez GetDate() pour récuperer la date dans des
      // variables y, m et d de type int.
    
      // Affichage de la date.
      cout << y << "-" << m << "-" << d << endl;
    }
    Téléchargez-le et complétez-le.
    Vérifiez en le compilant et en l'éxecutant: il doit marcher, et afficher 2015-09-23.
    Rappel: Pour compiler et éxecuter d'une seule traite: g++ votre_code.cc && ./a.out

    RENDU: 1.1.cc (complété!)

  2. Écrivez un fichier 1.2.cc contenant une fonction Strip() qui enlève tous les espaces d'une chaîne de caractères.
    Indications:
    Vérifiez votre fonction en téléchargeant 1.2.test.cc dans le même repertoire que 1.2.cc et en le compilant/exécutant.

    RENDU: 1.2.cc

  3. Écrivez un fichier 1.3.cc qui #include "1.2.cc" et qui contient une fonction main() pour que votre programme execute la fonction Strip sur son premier argument, et l'affiche (avec un saut de ligne à la fin). Donc, si vous faites ça:
    g++ 1.3.cc
    ./a.out " Bonjour  madame     la marquise H E L L O    W    ORL D  "
    Vous devez obtenir: BonjourmadamelamarquiseHELLOWORLD

    Indications:
    RENDU: 1.3.cc

  4. Écrivez un fichier 1.4.cc contenant une fonction SortRev qui prend en argument un tableau d'entiers de taille arbitraire, et qui renvoie une copie du tableau triée par ordre décroissant. Le tableau pris en entrée ne doit pas être modifié.
    Indications:
    Vérifiez que votre code marche avec le fichier 1.4.main.cc:
    g++ 1.4.main.cc && ./a.out
    Essayez par exemple avec 1 4 3 9 -4 5 2 5

    RENDU: 1.4.cc

  5. (*) Écrivez un fichier 1.5.cc contenant une fonction HIndex qui calcule le h-Index d'un scientifique, étant donné une liste du nombres de citations qu'il a eu pour chacun de ses articles:
    int HIndex(int num_articles, const int* num_citations) {
      ...
    }
    Indication: on pourra utiliser la question précédente.

    Vérifiez votre code en copiant 1.4.main.cc dans 1.5.main.cc, et en le modifiant pour faire tourner HIndex() et afficher le résultat. Le h-Index de l'exemple donné dans le 1.4 doit être 4, par exemple.
    Autres cas à tester:
    RENDU: 1.5.cc

  6. (***) Écrivez une version 1.6.cc du fichier précédent qui n'utilise pas sort() (même indirectement) et qui fonctionne en temps linéaire, c'est-à-dire une complexité O(N), où N est le nombre d'articles. NOTE: sort() fonctionne en O(N log(N)).

    RENDU: 1.6.cc