IFT-3001 (Hiver 2017) Travail 1
Enseignant : Claude-Guy Quimper
Date de remise : 26 février 2017, 23h59.
— Les travaux remis en retard ne seront pas corrigés et se verront attribuer la note de zéro.
— À moins de spécifications contraires, vous devez toujours pleinement justifier vos réponses.
— Il s’agit d’un travail individuel. Toute communication ou entraide avec une autre personne
au sujet de ce travail est interdite.
— Le code de programmation doit pouvoir compiler avec g++ 4.9.2. À partir d’une connexion VPN,
vous pouvez compiler votre code sur cette page web : http://geyron.fsg.ulaval.ca.
Format de remise :
— Vous devez remettre un fichier zip contenant un fichier PDF par question. La structure du
fichier zip ne doit pas contenir de sous-répertoire et doit seulement contenir les fichiers :
Question1.pdf, vecteur.cpp, Question2.pdf et Question3.pdf.
— Votre nom, prénom et matricule doivent apparaître dans l’en-tête de chaque page.
Question # 1: [25 points] Les fichiers vecteur.cpp et vecteur.hpp contiennent la défini-
tion d’une classe Vecteur. Elle permet de créer un vecteur vide d’entiers doté d’une capacité. La
méthode ajouteEntier ajoute un entier à la fin du vecteur et la méthode supprimeEntier
supprime un entier à une position passée en paramètre. Ces deux méthodes font augmenter ou ré-
duire de 1 la taille du vecteur, c’est-à-dire le nombre d’entiers dans le vecteur, que nous notons n.
La taille du vecteur ne peut pas dépasser sa capacité. Le fichier main.cpp, quant à lui, contient
une série de tests unitaires.
a) Analysez en meilleur cas, en pire cas et en cas moyen l’efficacité de la méthode supprimeEntier.
Votre analyse doit être faite en fonction de n, la taille du vecteur. Justifiez votre choix d’instruc-
tion baromètre. Justifiez les instances choisies pour représenter le pire cas et le meilleur cas. Pour
l’analyse en cas moyen, les ninstances possibles sont la suppression d’un élément à un index entre
0 et n−1et toutes ces instances sont équiprobables. Exprimez vos réponses à l’aide de la notation
asymptotique Θ.
b) Vous devez écrire la méthode supprimeEntiers qui prend en entrée un vecteur d’index
et qui supprime tous les entiers à ces positions. Vous devez analyser votre méthode en pire cas
en fonction de la taille du vecteur avant la suppression des entiers. Pour obtenir tous les points à
cette question, vous devez, sans utiliser de librairie de programmation externe, programmer une
fonction dont l’efficacité en pire cas est TW ORST (n)∈Θ(n)1. Pour obtenir une partie des points,
vous pouvez utiliser un algorithme de tri d’une librairie externe en supposant que son efficacité
1. Ici, nest la taille du vecteur dont les éléments sont supprimés. Vous pouvez supposer que la taille du vecteur
d’index est inférieure, ou égale, à n.
1