Les types composés définis par l'utilisateur

Liste des travaux pratiques

Manipulations sur un tableau d'entiers

Réaliser un programme convivial (à l'aide d'un menu sommaire) qui permet de compléter un tableau d'entier de 10 cases, d'afficher son contenu, de supprimer des valeurs.

Le menu comporte 4 options
  1. Ajouter une valeur,
  2. Enlever la dernière valeur introduite,
  3. Afficher le contenu du tableau,
  4. Quitter le programme.

  • Au départ le tableau doit être vide valeur 0 dans toutes les cases.
  • L'affichage lorsqu'il est demandé doit être sous la forme de, par exemple <5, 3> nous remarquons dans cet affichage que le tableau dispose de deux valeurs entières respectivement 5 et 3.
  • Il faut protéger votre programme contre les mauvaises manipulations. En effet, le tableau ne doit pas comporter plus de dix valeurs, même si l'opérateur, sans le faire exprès, veut en rajouter d'autre.
  • Il faut également avertir l'utilisateur si le choix qu'il propose n'est pas correct.

Calcul de la moyenne de la valeur maxi et de la valeur mini d'un ensemble de notes

Nous allons reprendre le projet de l'étude précédente. Il existe une différence de taille. Cette fois-ci, je vous demande d'afficher l'ensemble des notes saisies antérieurement, en plus de la moyenne et des notes extrêmes.

ATTENTION, cette fois-ci, vous devez donner la moyenne précisément, c'est-à-dire pas d'arrondi à 0,5 près.
Procédure à suivre avant de commencer à coder

Respecter l'affichage proposé ci-dessous, notamment les lignes intermédiaires vides entre les différentes zones. Par ailleurs, remarquez bien la justification à droite des résultats, ces derniers ont systématiquement 2 chiffres après la virgule.

Menu sur la gestion de notes : modes insertion et suppression

Encore une fois, nous reprenons le projet sur la gestion des notes. Plutôt que d'imposer un nombre de note dès le départ, nous rajoutons un simple menu à cette application qui nous permet d'ajouter, ou de supprimer, une note quand nous le désirons. Pour simplifier le traitement, la suppression concerne que la dernière note introduite.

Procédure à suivre avant de commencer à coder

Respecter l'affichage proposé ci-dessous, notamment les lignes intermédiaires vides entre les différentes zones. Par ailleurs, remarquez bien la justification à droite des résultats. Si la moyenne ne tombe pas juste, il faut au maximum avoir deux chiffres après la virgule.

Calcul de la longueur d'une chaîne de caractères

Vous allez mettre en oeuvre un petit programme qui permet de calculer la longueur d'une chaîne de caractères saisie à partir du clavier. Cette chaîne devra être relativement simple et ne pas comporter d'espace problème avec l'objet cin.

Résultat

Concaténation de deux chaînes de caractères

À partir de deux chaînes de caractères saisies au clavier, vous allez concaténer ces deux chaînes pour en faire une seule. La concaténation consiste à fusionner les deux chaînes, l'une à la suite de l'autre pour en faire une troisième.

Résultat

Suppression d'une partie de chaîne

À partir d'une chaîne de caractères saisie au clavier, vous allez supprimer une partie de cette chaîne en demandant la position du premier caractère à effacer ainsi que le nombre de caractères à effacer à partir de cette position.

Résultat

Récupération d'une partie de chaîne

À partir d'une chaîne de caractères saisie au clavier, vous allez récupérer une partie de cette chaîne en demandant la position du premier caractère à récupérer ainsi que le nombre de caractères à récupérer à partir de cette position.

Résultat

Insertion d'une chaîne dans une autre

À partir d'une chaîne de caractères saisie au clavier, vous allez insérer une autre chaîne de caractères également saisie au clavier en précisant la position désirée sur la première chaîne de caractères.

Résultat

Calcul sur les nombres complexes

Dans cette application en mode console, vous allez mettre en oeuvre un programme qui permet de retrouver l'addition et la soustraction de deux nombres complexes. Ces nombres complexes sont des variables issues d'une structure composée d'une partie réelle et d'une partie imaginaire, comme nous l'avons vu en cours.

Procédure à suivre avant de commencer à coder

Cette structure doit être déclarée en dehors de la fonction main(). Déclarez autant de variables que nécessaire de cette structure pour élaborer correctement votre algorithme.

Menu sur la gestion de notes : modes insertion et suppression d'une note particulière

Par rapport au projet précédent, nous rajoutons le choix de la note à supprimer. Respecter l'affichage proposé ci-dessous, notamment les lignes intermédiaires vides entre les différentes zones. Par ailleurs, remarquez bien la justification à droite des résultats. Si la moyenne ne tombe pas juste, il faut au maximum avoir deux chiffres après la virgule.

Résultat

Recherche des diviseurs d'un nombre entier positif

En vous aidant du traitement sur les nombres premiers, vous allez mettre en oeuvre un programme qui permet de donner la liste des diviseurs contituant un nombre entier. Chacun des diviseurs de la liste doit systématiquement être un nombre premier, c'est-à-dire, ne plus comporter lui-même de diviseurs. Si le nombre étudié ne comporte pas de diviseurs, c'est qu'il est premier et vous devez avertir l'utilisateur que c'est effectivement le cas.

Exemples

Récupération d'une valeur numérique issue d'une chaîne de caractères

Lorsque nous effectuons une saisie à partir du clavier, généralement dans le programme, nous spécifions une variable dont le type correspond exactement à la valeur attendue. Par exemple, si nous attendons un entier, nous déclarons en conséquence une variable entière qui récupèrera cette valeur. Pourtant, rien n'empêche l'utilisateur de faire une mauvaise saisie en proposant un caractère à la place de la valeur entière attendue.

Procédure à suivre avant de commencer à coder

Du coup, Il est souvent préférable de systématiquement attendre comme valeur de saisie une chaîne de caractères. Cette chaîne est ensuite analysée pour éventuellement avertir l'utilisateur de sa mauvaise saisie. Par contre, il sera nécessaire de réaliser des changements de type pour permettre, par exemple, la récupération d'une valeur entière.

Conversion décimal à binaire

Le langage c++ ne permet pas d'avoir une représentation binaire d'une valeur entière. Vous allez palier au problème en construisant un programme qui permet de réaliser cette opération et qui convertit donc une valeur décimale en son équivalent binaire.

Procédure à suivre avant de commencer à coder

Le résultat de cette conversion sera placé dans une chaîne de caractères qu'il sera possible d'afficher.

Jeu : Recherche d'un nombre mystère

l'ordinateur tire au sort un nombre mystère entre 1 et une valeur fixée par le joueur. Le joueur, par la suite, doit retrouver ce nombre mystère en proposant une série de valeurs. À chaque valeur proposée, l'ordinateur indique si le nombre mystère est supérieur ou inférieur à celui proposé avec en plus la liste des coups déjà effectués. Le joueur dispose de 10 essais au maximum.

Affichage et résultats

Le code morse

Le code Morse (du nom de Samuel Morse, son inventeur) est un code télégraphique utilisant un alphabet conventionnel fait de traits et de points, et, quant au son ou la lumière, de longues et de brèves. Ce codage assigne ainsi à chaque lettre, chiffre et signe de ponctuation une combinaison unique de signaux intermitants (d'impulsions courtes et longues, représentés par des points et des tirets). Les caractères seront séparés par un espace   et les mots par un /.

Affichage et résultats

Jeu : MasterMind

L'ordinateur doit proposer une combinaison de 4 couleurs sur 6 possibles (Rouge, Jaune, Vert, Bleu, Cyan et Magenta) Le joueur doit découvrir la combinaison sachant qu'il ne dispose que de 10 essais au maximum. À chaque essai proposé par le joueur, l'ordinateur doit indiquer le nombre de couleurs bien placées (pions noirs) et le nombre de couleurs bonnes mais mal placées (pions blancs). Il est possible d'avoir des couleurs identiques dans la combinaison proposée.

Affichage et résultats

Structure Élève

Dans cet exercice, vous allez mettre en œuvre un programme qui comportera une structure Eleve. Cette structure doit être composée d'un certain nombre de champs dans voici la liste :

Composition de la structure
Cette structure doit être déclarée en dehors de la fonction main. Déclarez une variable eleve issue de cette structure. Profitez-en pour l'initialiser correctement. Ensuite, proposez un menu tel qu'il vous ait montré sur la droite. Systématiquement, avant chaque menu, vous devez afficher l'intitulé complet de l'élève.

Contrôler une date saisie au clavier

Vous allez réaliser une application capable de contrôler la saisie d'une date complète la saisie est réalisée en une seule fois sur la même ligne en mode console.

Saisie à respecter en suivant l'ordre proposé
  1. Le jour de la semaine sous forme de chaînes de caractères tout en minuscule.
  2. Le jour du mois, en respectant bien la limite imposée par la valeur maximale possible.
  3. Le mois exprimé sous forme de chaîne de caractères également tout en minuscule mais avec les lettres accentuées.
  4. L'année.

Déclarer les éléments suivant à l'extérieur de la fonction main()
  1. Déclaration de la constante JOUR_SEMAINE qui représente un tableau de chaînes de caractères comprenant l'intitulé en minuscule de chaque jour de la semaine du lundi au dimanche.
  2. Déclaration de la structure Mois composée de deux champs, le premier appelé nom qui représente l'intitulé du mois sous forme d'une chaîne de caractères, l'autre appelé nombreDeJours qui indique le nombre de jours maxima possible sur le mois spécifié 28, 30 ou 31.
  3. Déclaration d'une constante MOIS qui représente un tableau de structure Mois comprenant l'ensemble des mois de l'année avec leur nom respectif et le nombre de jours maxima autorisés.
  4. Déclaration de la structure Date composée de quatre champs : jourSemaine, jourMois et mois qui sont représentés par des entiers non signés et le champ annee représenté par un entier.
Déclarer les variables suivantes à l'intérieur de la fonction main()
  1. Déclaration de la variable jourSemaine représentant une chaîne de caractères.
  2. Déclaration de la variable nomMois représentant une chaîne de caractères.
  3. Déclaration d'une variable aujourdhui qui représente une structure Date qui servira à enregistrer les différents éléments de la date saisie.
  4. Déclaration d'une variable valide qui représente un booléen qui permettra de donner le résultat des évaluations respectives : de la bonne écriture du jour de la semaine, de la bonne écriture du mois accent compris et de la validité du jour du mois.
Quelques remarques avant de coder

D'après le scénario proposé ci-dessus, vous remarquez qu'il est nécessaire de prévoir une itérative qui sera systématiquement sollicité dès que l'un des éléments n'est pas valide. Par ailleurs, dès qu'un seul des éléments n'est pas correct, on demande de recommencer immédiatement la saisie. Effectivement, dans ce cas de figure, ce n'est pas la peine de perdre son temps à évaluer un autre élément alors que le premier n'est pas bon.

Un petit conseil qui me paraît utile. N'essayez pas de tout coder d'un coup. Commencer par contrôler uniquement la saisie du jour de la semaine. Une fois que cette partie sera validée, vous pourrez rechercher les autres parties de l'algorithme général successivement, petit à petit. Pour évaluer les chaînes de caractères saisies, vous pouvez utiliser une fonction toute faite qui permet de comparer deux chaînes entre-elles. Il s'agit de la fonction strcmp(chaîne1, chaine2). Le retour de la fonction renvoie la valeur 0 si les chaînes sont rigoureusement identique, -1 si la première est placée avant dans l'ordre alphabétique, et 1 si la première se situe après dans l'ordre alphabétique. Pour pouvoir utiliser cette fonction, vous devez inclure le fichier en-tête string.h.

Recherche du jour de la semaine à partir d'une date quelconque

Nous allons nous servir de l'étude précédente afin de retrouver le jour de la semaine d'une date saisie au clavier. La procédure à suivre consiste à donner la date complète du jour en cours et de donner ensuite la date de recherche, en ne spécifiant pas dans ce dernier cas, bien entendu, le jour de la semaine puisque c'est l'élément à rechercher.

Résultat

Afin de mener à bien l'élaboration de ce programme, je vous propose de suivre les conseils suivants :
  1. Revoyer la déclaration de la structure Date afin de rajouter un champ supplémentaire joursAnnee représenté également par un entier non signé qui, comme son nom l'indique, permettra de connaître le nombre de jours déjà fait dans l'année spécifiée.
  2. A la fin de l'analyse de la date saisie, si elle est correcte, vous calculerez effectivement le nombre de jours déjà écoulés dans l'année en cours, en tenant compte, si possible, de l'année bissextile le cas échéant.
  3. Déclarer une nouvelle variable recherche de type Date qui va servir à enregistrer la date à rechercher.
  4. Réaliser la saisie de cette date de recherche en faisant une analyse tout de suite après, comme lors de la saisie de la date d'aujourd'hui vous pouvez faire un copier-coller et changer le nom des variables utilisées. ATTENTION, le jour de la semaine ne doit pas cette fois-ci être intégrée dans l'évaluation, puisque c'est justement l'élément à rechercher.
  5. Il ne vous reste plus ensuite qu'à retrouver le jour de la semaine. Pour cela, l'algorithme de recherche consiste à calculer la différence de jours qui existe entre la date de recherche et la date d'aujourd'hui, en tenant compte si possible des années bissextiles.