• Aucun résultat trouvé

Coupe du monde 2014

N/A
N/A
Protected

Academic year: 2022

Partager "Coupe du monde 2014"

Copied!
4
0
0

Texte intégral

(1)

Auteur : Mohamed Messabihi

Matière : Programmation et structures de données Date 19 Juin 2014

Durée 1h30

Université Abou Bakr Belkaïd - Tlemcen Faculté des Sciences 1èreAnnée MI Semestre 2

Examen de rattrapage

Aucun document n'est autorisé.

L'utilisation des portables est strictement interdite.

Coupe du monde 2014

Pour répondre à une question, vous avez le droit de vous servir des réponses des questions précédentes, même si vous ne les avez pas traitées. Il est fortement conseillé de lire le sujet en entier avant de commencer.

1 Type Match (3 pts)

Un Match est caractérisé par une date, le nom de la première équipe, son score et le nom de la seconde équipe ainsi que son score. Créer un type de donnée permettant de déclarer des variables de type match.

L'exemple ci-contre montre la représentation du match de l'Algérie contre la Corée du sud du 22/06/2014.

Solution

1PROGRAM CoupeDuMonde ;

2TYPE

3 Jour_t = 1 . . 3 1 ;

4 Mois_t = 1 . . 1 2 ;

5 Annee_t = 1 9 3 0 . . 2 9 9 9 ;

6 Date_t = Record

7 j : Jour_t ;

8 m : Mois_t ;

9 a : Annee_t ;

10 End;

11

12 Nom_Equipe = S t r i n g [ 5 0 ] ;

13 Score = 0 . . 1 0 ;

14 Match_t = Record

15 date : Date_t ;

16 equipe1 : Nom_Equipe ;

17 score_equipe1 : Score ;

18 equipe2 : Nom_Equipe ;

19 score_equipe2 : Score ;

20 End;

2 Saisie et achage d'un match (3 pts)

1. Écrire une procédure permettant de lire une variable de type match.

Solution

BMohamed.Messabihi@gmail.com Page 1/1

(2)

1 Procedure Lire_Date ( var d : Date_t ) ;

2 Begin

3 write ( ' j o u r : ' ) ; readln ( d . j ) ;

4 write ( ' mois : ' ) ; readln ( d .m) ;

5 write ( ' annee : ' ) ; readln ( d . a ) ;

6 End;

7

8 Procedure Lire_Match ( var m : Match_t ) ;

9 Begin

10 writeln ( ' Donner l a date du match : ' ) ;

11 Lire_Date (m. date ) ;

12 write ( ' Donner l e nom de l a premiere equipe : ' ) ;

13 readln (m. equipe1 ) ;

14 write ( ' Donner l e nom de l a seconde equipe : ' ) ;

15 readln (m. equipe2 ) ;

16 write ( ' Donner l e s c o r e de l a premiere equipe : ' ) ;

17 readln (m. score_equipe1 ) ;

18 write ( ' Donner l e s c o r e de l a seconde equipe : ' ) ;

19 readln (m. score_equipe2 ) ;

20 End;

2. Écrire une procédure qui ache une variable de type match passée en paramètre

Solution

1 Procedure Afficher_Match ( m : Match_t ) ;

2 Begin

3 writeln ( '−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−' ) ;

4 writeln (m. date . j , ' / ' , m. date .m , ' / ' , m. date . a ) ;

5 writeln (m. equipe1 , ' : ' , m. score_equipe1 , '−' , m. score_equipe2 , ' : ' , m. equipe2 ) ;

6 End;

3 Gestion de plusieurs matchs (3 pts)

On souhaite enregistrer l'ensemble des matchs du premier tour de la coupe du monde 2014. On rappelle qu'il y a 32 équipes, et que chaque équipe doit confronter les trois autres équipes de son groupe (c-à-d 48 matchs).

1. Proposer un type de donnée pour stocker l'ensemble des matchs.

Solution

1 Tableau_Matchs = array [ 1 . . 4 8 ] of Match_t ;

2. Écrire une procédure qui stocke l'ensemble des matchs dans la structure de données que vous avez proposé.

Solution

1 Procedure Lire_Tableau_Matchs ( var t_matchs : Tableau_Matchs ) ;

2 var i : Integer ;

3 Begin

4 for i :=1 to 48 do

5 Lire_Match ( t_matchs [ i ] ) ;

6 End;

3. Écrire une procédure qui permet d'acher l'ensemble des matchs stockés dans cette structure de données.

Solution

1 Procedure Afficher_Tableau_Matchs ( t_matchs : Tableau_Matchs ) ;

2 var i : Integer ;

3 Begin

4 for i :=1 to 48 do

5 Afficher_Match ( t_matchs [ i ] ) ;

6 End;

BMohamed.Messabihi@gmail.com Page 2/1

(3)

4 Stockage des matchs dans un chiers et leur chargement (3 pts)

An d'éviter, à chaque fois, de saisir tous les matchs du premier tour, on souhaite les sauvegarder dans un chier. Ainsi, par la suite, il sut juste de les charger pour pouvoir les manipuler.

1. Écrire une procédure permettant de stocker l'ensemble des matchs du premier tour dans un chier

Solution

1 Procedure Stocker_Tableau_Matchs ( nom_fich : S t r i n g ; t_matchs : Tableau_Matchs ) ;

2 var i : Integer ;

3 Begin

4 Assign ( Coupe_du_monde , nom_fich ) ;

5 Rewrite (Coupe_du_Monde ) ;

6 for i :=1 to 48 do

7 Write(Coupe_du_Monde , t_matchs [ i ] ) ;

8 Close (Coupe_du_Monde ) ;

9 End;

2. Écrire une procédure qui permet de charger l'ensemble des matchs stockés dans un chier dans la structure de données que vous avez proposée dans la question 3.

Solution

1 Procedure Charger_Tableau_Matchs ( nom_fich : S t r i n g ; var t_matchs : Tableau_Matchs ) ;

2 var i : Integer ;

3 Begin

4 i :=1;

5 Assign ( Coupe_du_monde , nom_fich ) ;

6 Reset (Coupe_du_Monde ) ;

7 While not e o f (Coupe_du_Monde) do

8 Begin

9 read (Coupe_du_Monde , t_matchs [ i ] ) ;

10 i := i +1;

11 End;

12 Close (Coupe_du_Monde ) ;

13 End;

5 Qualication (3 pts)

La qualication au huitième de nale se fait par calcul de points cumulés par chaque équipe. Pour chaque match, l'équipe reçoit trois points pour une victoire, un point pour un match nul et zéro point sinon. Écrire une fonction qui renvoie le nombre points gagnés par une équipe (le nom de l'équipe est passé comme paramètre).

Solution

BMohamed.Messabihi@gmail.com Page 3/1

(4)

1 Function Nbr_Points ( nom_equip : Nom_Equipe ; t_matchs : Tableau_Matchs ) : Integer ;

2 var i , p o i n t s : integer ;

3 Begin

4 p o i n t s := 0 ;

5 for i :=1 to 48 do

6 Begin

7 i f ( t_matchs [ i ] . equipe1 = nom_equip ) then

8 Begin

9 i f ( t_matchs [ i ] . score_equipe1 > t_matchs [ i ] . score_equipe2 ) then

10 p o i n t s := p o i n t s+3

11 else i f ( t_matchs [ i ] . score_equipe1 = t_matchs [ i ] . score_equipe2 ) then

12 p o i n t s := p o i n t s+1

13 End

14 else i f ( t_matchs [ i ] . equipe2 = nom_equip ) then

15 Begin

16 i f ( t_matchs [ i ] . score_equipe2 > t_matchs [ i ] . score_equipe1 ) then

17 p o i n t s := p o i n t s+3

18 else i f ( t_matchs [ i ] . score_equipe2 = t_matchs [ i ] . score_equipe1 ) then

19 p o i n t s := p o i n t s+1

20 End

21 End;

22 Nbr_Points := p o i n t s ;

23 End;

6 Programme principal (3 pts)

Écrire un programme principal qui demande à l'utilisateur d'introduire les données concernant tous les matchs du premier tour, puis les stocker dans un chier, ensuite les charger une nouvelle fois, puis demande à l'utilisateur un nom d'une équipe pour enn renvoyer le nombre total des points gagnés par cette dernière.

Solution

1 BEGIN

2 Lire_Tableau_Matchs ( tab_matchs ) ;

3 Writeln ( ' Donner un nom de f i c h i e r ' ) ;

4 readln ( nom_fichier ) ;

5 Stocker_Tableau_Matchs ( nom_fichier , tab_matchs ) ;

6 Charger_Tableau_Matchs ( nom_fichier , tab1_matchs ) ;

7 Afficher_Tableau_Matchs ( tab1_matchs ) ;

8 Write ( ' Donner l e nom de l ' ' equipe : ' ) ;

9 Readln(nom_eq ) ;

10 writeln ( 'L ' ' equipe ' , nom_eq , ' a gagne : ' , Nbr_Points (nom_eq , tab1_matchs ) , ' p o i n t s . ' ) ;

11END.

One two three, viva l'algérie... !

BMohamed.Messabihi@gmail.com Page 4/1

Références

Documents relatifs

Souligne les phrases subordonnées relatives et entoure le pronom relatif :.. J'utilise souvent la gomme qui appartient à

On se propose de fusionner ces deux chiers en un chier unique appelé Promo_MI, qui contiendra tous les noms qui se trouvent dans les des deux chiers SectionA et SectionB et qui

Nous aidons les entreprises à offrir une expérience client d’exception en nous concentrant sur quatre solutions majeures : Gestion de l’Expérience client (CXM), Automatisation

Accords et conventions qui n’emportent pas versement de subventions par l’uB et ceux qui ne sont pas d’ordre stratégique pour l’ensemble de l’établissement ou n’engagent

Avenant à la convention de financement du Centre Interrégional de formation aux carrières des bibliothéques de Bourgogne et de Franche Comté (CFCB Bibliest) pour l'année 2016

Le score est donc égal au score au moment où on atteint la cible (il a peut être diminué si on a touché des obstacles) moins la valeur de la

[r]

In order to turn nuclear fission into electrical energy, nuclear power plant operators have to control the energy given off by the enriched uranium and allow it to