retour vers la page d'accueil

STS IG 2 - année 2002/2003
TD n°5 : Tirage du loto
(éléments de corrections)

Objectif

Gérer, au moyen de l'allocation dynamique, la mémorisation d'un tirage de jeu de loto (99 numéros).

Hypothèses

Les numéros sont tirés de manière aléatoire par votre application et, bien sûr, un numéro ne peut pas sortir 2 fois ! L'intervalle des numéros est par défaut [1, 99] mais il doit être modifiable par l'utilisateur tout en restant dans le domaine [1, 1000].

Vous disposez comme générateur de nombre aléatoire de la fonction suivante :

fonction EntierAleatoire (E: BorneMax est un entier strictement positif) renvoie un entier dans l'intervalle [0, BorneMax-1]

La structure dynamique doit permettre à la fois de conserver l'ordre du tirage et de trier par ordre numérique les numéros sortis. Le numéro de doit être présent qu'une seule fois en mémoire et l'usage de tableau est interdit.

Plan de travail

Définir la structure de données dynamique que vous utiliserez, ainsi que les données de type pointeur qui vous seront nécessaires.

Rédiger les algorithmes suivants :

algorithme InitialiserTirage
// cet algorithme initialise le(s) chainage(s) dynamique(s).

algorithme ViderTirage
// cet algo efface tous les numéros sortis en libérant les structures dynamiques.

algorithme AnnulerTiragePrecedent
// cet algo retire le dernier numéro sorti, qui peut donc de nouveau être tiré.

fonction SortirNumero renvoie un entier
// cette fonction renvoie le numéro nouvellement tiré et l'ajoute dans les structures dynamiques.

fonction ChercherNumero (E: Numero est un entier) renvoie un entier
// Cette fonction recherche si le numéro passé en paramètre est déjà sorti. Il renvoie le numéro du tirage correspondant.
// Par exemple : si le tirage des 4 premiers numéros donne 24, 15, 75, 49
// alors l'appel de
ChercherNumero (75) donnera 3
// tandis que l'appel de
ChercherNumero (62) donnera 0 (car le 62 n'est pas encore sorti)

algorithme AfficherTirage (entrée : OrdreNumerique est un booléen)
// Affiche tous les numéros déjà sortis ordonnés de la manière suivante (en reprenant l'exemple du tirage ci-dessus):
//   si OrdreNumerique est à VRAI, alors les numéros seront donnés dans l'ordre numérique (15, 24, 49 et 75)
//   si OrdreNumerique est à FAUX, alors les numéros seront donnés dans l'ordre du tirage (24, 15, 75 et 49)

Prévoir le jeu de test pour chaque algorithme.

Programmer l'application correspondante.


Auteur : Jean HENRI - septembre 2002 - copyright SeieS