Univeristé Saad Fahleb Blida *** Faculté des sciences *** Département d'informatique


 

                                        EMD "Structures de Données et Algorithmiques"

                                                        Premier semestre, 2010-2011

 

 


 

Exercice unique composé de plusieurs parties : les questions 2,3,4 dépendent de 1 mais sont indépendantes les unes des autres.

Les questions 6,7 dépendent de 5 et sont indépendantes l'une de l'autre.

 

On désire implémenter certaines fonctions du jeu suivant :

 

J joueurs de cartes (1 <= J <= 6) tirent, tour a tour, une "main". Une main sera composé de "n" cartes, n tiré aléatoirement. Le cartes ne seront pas tirées d'un jeu à un nombre de cartes déterminées mains d'un ensemble non déterminé et non limité de cartes. Les cartes sont soient des "coeur"(on utilisera dans les exemples C pour Coeur), des "carreau"(on utilisera dans les exemples R pour Carreau), des "trèfle"(T pour Trèfle) ou des "pique"(P pour Pique).

Les cartes sont les suivantes : As(1), 2, 3, ..., 9, 10, Valet(11), Dame(12), Roi(13).

Le premier joueur qui totalisera 1000 points selon les règles qui viennent juste après sera le gagnant, Le jeu s’arrête alors.

 

1 - Comment representerez vous "une main" en mémoire ? Expliquez et donnez la définition du type de donnée résultant (1pt).

 

2 - On voudrait organiser ma "main" de la façon suivante : les "pique" d'abords, les "coeur" ensuite, les "trèfle" en troisième position et enfin les "carreau", tous organisés du plus petit au plus grand.

Expliquez comment écrire la fonction qui organise ainsi la "main" (2 pts) puis écrire la fonction selon votre explication (6 pts).

Exemple : soit une main composée des cartes suivantes : V/C, D/P, 10/C, R/R, 9/C, 1/T

On devrait avoir en sortie : D/P, 9/C, 10/C, V/C, 1/T, R/R

 

3 - On désire compter le total des "annonces" dans une main, Une annonce est une succession de cartes de la même couleur, Trois cartes de la même couleur qui se suivent donnent 20 points, quatre qui se suivent donnent 50 points et cinq qui se suivent donnent 100 points.

Ecrire une fonction TotalAnnonces(main) qui calcule total des annonces d'une "main" (3pts).

Dans l'exemple précédant, il y a une annonce de trois cartes successives : 9/C, 10/C, V/C qui vaut 20 points.

 

4 - Ecrire une fonction Total(main, atout) qui calcule le total cumulé dans la main de la façon suivante (2 pts).

L'as vaut 11 points, le 10 vaut Dix points, le Roi vaut 4 points, la Dame 3, le Valet a deux situations : s'il est considéré "atout", il vaut 20 points, sinon, il vaut 2 points, le 9 a également deux situations : s'il est considéré "atout", il vaut 14 points, sinon, il vaut 0, toutes les autres cartes valent 0.

 

5 - On désire mémoriser pour chaque joueur les résultats de chaque tirage. Donnez la structure permettant de mémoriser les résultats de chacun des quatre joueurs (2 pts).

 

6 - Ecrire la fonction Inserer(..., joueur, résultat) qui va mémoriser le résultat d'un tirage (d'une main)(2 pts).


7 - Ecrire la fonction TrouveLeMeilleur(...) qui retourne le numéro du gagnant et le nombre de points totalisées (2 pts).

Last edited Jan 28, 2012 at 1:09 PM by JooS, version 3

Comments

No comments yet.