Chapitres traités   

Codage binaire

Vous allez mettre en oeuvre un programme qui permet de tester et de visualiser un traitement binaire. A partir d'un message saisi par l'utilisateur :

  1. vous devez afficher la suite des caractères qui font parti du message,
  2. à chaque caractère, vous préciserez la valeur binaire équivalente codée sur 9 bits en sachant que le nombre de 1 présents sur le nombre binaire doit systématiquement être pair.
  3. à la fin de cette suite de caractères, vous préciserez le nombre de caractères présents dans le message.
  4. Pendant tout ce traitement, vous calculerez le checksum dont le gabarit est également fixé à 9 bits.

Pour ce programme, utiliserez les classes bitset et string.
.

Corrections : Visualisation du résultat -- récupération du fichier source
.

Choix du chapitre Conteneur vector et algorithmes génériques

Vous allez implémenter un conteneur (que vous appelerez tableau) de type vector qui représente un tableau d'entier en suivant le scénario proposé sur les écrans ci-contre. Proposez donc un menu qui propose un certain nombre de rubriques qui permettent de gérer convenablement le tableau. Systématiquement, le contenu du tableau devra être affiché avec quelques valeurs particulières. Les rubriques sont les suivantes :

  1. Ajouter un élément : permet de rajouter une valeur entière à la fin des éléments déjà introduits. On ne peut introduire une valeur qui n'existe pas dans le tableau. Grâce à cette prérogative, nous empêchons les doublons.
  2. Enlever le dernier élément.
  3. Enlever une valeur particulière : cette rubrique permet de supprimer une valeur choisie par l'utilisateur et de décaler les autres en conséquence.
  4. Tout vider : vide le contenu entier du tableau.
  5. Insérer une valeur avant ou après : permet d'introduire une valeur à un endroit spécifique en précisant où vous désirez faire l'insertion. Là encore, il faut éviter d'avoir des doublons.
  6. Trier : permet de trier le contenu du tableau dans l'ordre croissant.
Corrections : Visualisation du résultat -- récupération du fichier source
.

Choix du chapitre Conteneur list et algorithmes génériques

En reprenant le principe du programme précédent, vous allez changer de type de conteneur en prenant cette fois-ci le conteneur list. Vous allez utiliser le même scénario en faisant juste une toute petite modification. Au lieu de l'appeler tableau, vous le nommerez liste.

Corrections : Visualisation du résultat -- récupération du fichier source
.

Choix du chapitre Chaines de caractères

Vous allez réaliser un programme qui permet de recenser et de stocker dans un conteneur chaque mot issue d'un texte saisie éventuellement sur plusieurs lignes.

Si cela n'est pas déjà fait, la première lettre de chaque mot doit être mis en majuscule.

Pour finir, la suite de mot doit être placée dans l'ordre alphabétique.

Proposez un affichage qui montre le contenu de votre suite. Chaque mot doit être visualisé les uns en dessous des autres.

Corrections : Visualisation du résultat -- récupération du fichier source
.

Choix du chapitre Classe Diviseurs qui donne la suite des diviseurs dans un nombre

Vous allez de nouveau effectuer une recherche sur la suite des diviseurs que comporte un nombre quelconque. Pour cela vous allez créer une nouvelle classe Diviseurs qui implémente tout le comportement que nous avons déjà étudier dans le chapitre des fonctions. Respectez, le diagramme UML proposé ci-contre. Bien entendu, vous pouvez vous servir de l'implémentation déjà élaborer précédement. Cette classe est composée d'un certaine nombre de méthodes :

  1. suite : attribut qui représente la suite des diviseurs composés dans nombre.
  2. nombre : attribut qui est le nombre stocké dans la classe est qui sert de base de calcul pour la composition de l'ensemble des diviseurs potentiels.
  3. Constructeur par défaut : qui permet de créer un objet représentant le nombre 1.
  4. Constructeur avec un paramètre : qui permet de stocker dans l'attribut suite l'ensemble des diviseurs qui compose le nombre passé en argument. Pour réaliser cette opération, le constructeur fait appel à la méthode privée rechercheDiviseurs.
  5. nouveau : qui permet de prendre un nouveau nombre et d'effectuer une nouvelle recherche sur l'ensemble des diviseurs possibles grâce également à la méthode privée rechercheDiviseurs. L'ancienne suite est détruite, la nouvelle correspond à celle du nouveau nombre.
  6. getNombre : renvoie le nombre naturel.
  7. getNombreDiviseurs : renvoie le nombre de diviseurs composant la suite.
  8. opérateur d'indexation "[ ]" : qui renvoie le diviseur spécifié par l'indice proposé en argument.
  9. premier : indique si le nombre est premier ou pas.
  10. rechercheDiviseurs : c'est cette méthode privée qui à partir du nombre détermine la liste des diviseurs potentiels.

TP et codage relatif à la fonction rechercheDiviseurs

Voici un exemple du résultat attendu :

Corrections : Cliquez sur le fichier source à visualiser

Récupération de l'ensemble des sources en format ZIP

Choix du chapitre Class Rationnel

Vous allez vous servir de la classe précédente pour élaborer une nouvelle classe, la classe Rationnel. Cette classe représente en fait essentiellement des fractions dont chacun des termes (numérateur, dénominateur) est un entier positif. Cette fraction peut également être positive ou négative.

Il est possible de construire n'importe quelle type de fraction, seulement, l'objet de cette classe au moment de sa création doit faire en sorte d'avoir la fraction la plus simple possible. Ainsi, lorsque nous créons le nombre rationnel 21/14, nous devons avoir en finalité le nombre rationnel 3/2. Une méthode s'occupe de ce genre de traitement, il s'agit de la méthode simplification, et c'est cette méthode qui utilise les compétences de la classe Diviseur afin de faire les recherches nécessaires sur les diviseurs communs. A ce sujet, vous allez utiliser la classe que vous avez construite au TP précédent à laquelle, vous allez rajouter deux nouvelles méthodes :

  1. supprimeCommun : Cette méthode supprime les diviseurs qui sont en commun entre l'objet lui-même et celui passé en argument de la méthode et fait appel ensuite à la méthode ci-dessous pour recalculer le nombre équivalent à la suite des diviseurs qui reste.
  2. calculNombre : détermine le nombre équivalent de l'ensemble des diviseurs que compose le conteneur suite.

Pour finir, vous allez faire en sorte qu'il soit possible d'additionner deux nombres Rationnel(s). Voici, ci-dessous, une des utilisation possible.

Corrections : Cliquez sur le fichier source à visualiser

Récupération de l'ensemble des sources en format ZIP

Choix du chapitre Classe Polynome

Cette fois-ci, nous allons mettre en oeuvre une classe Polynome qui doit pouvoir représentée, par exemple, l'écriture suivante :

Chaque objet de cette classe doit avoir son propre degre et chaque coefficient est représenté par un nombre Rationnel.

En tenant compte du diagramme de classe ci-dessus et du scénario proposé ci-dessous, construisez cette classe Polynome.

Corrections : Cliquez sur le fichier source à visualiser

Récupération de l'ensemble des sources en format ZIP

Choix du chapitre Conteneur map

Vous allez mettre en oeuvre un programme qui gère un répertoire téléphonique. Dans cette gestion vous devez avoir la possibilité :

  1. d'insérer de nouvelles personnes avec leur numéro personnel.
  2. de supprimer ces personnes de votre répertoire.
  3. d'effectuer une recherche d'un numéro à partir du nom de la personne.
  4. d'effectuer une recherche du nom de la personne à partir de son numéro de téléphone.

A chaque fois que le menu s'affiche, vous devez également indiquer le nombre de personnes déjà présentes dans votre répertoire, ainsi que la liste des personnes avec leur numéro de téléphones.

Ci contre se trouve un exemple de scénario d'utilisation de votre programme.

Corrections : Visualisation du résultat -- récupération du fichier source
.

Choix du chapitre Conteneur multimap (en option)

Reprenez le programme ci-dessus en proposant, cette fois-ci, d'avoir pour une même personne, plusieurs numéros de téléphones.

Corrections : Visualisation du résultat -- récupération du fichier source
.