Gérer, au moyen de l'allocation dynamique, la mémorisation d'un tirage de jeu de loto (99 numéros).
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.
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.