You are on page 1of 5

1.

Procédure InitConcours (DonRes cr : Concours) permettant de saisir les données


concernant un concours (désignation, date, nombre des postes ouverts et nombre de
candidats en liste d’attente). La procédure permet aussi de saisir le nombre des critères
utilisés et un tableau de critères (Libc et Coeff) en utilisant la procédure SaisieCriteres.
Procédure InitConcours (DonRes cr : Concours)
Début
Ecrire("Donner la designation du concours")
Lire (cr. Desig )
Ecrire("donner sa date")
Lire(cr.dateCrs)
Répéter
Ecrire("donner le nb de postes ouverts")
Lire(cr. NbPostes)
Jusqu’à cr. NbPostes>0
Répéter
Ecrire("donner le nb de postes en attente")
Lire(cr. NbAttente )
Jusqu’à cr. NbAttente  >0
Répéter
Ecrire("donner le nb de critères")
Lire(cr. Nb)
Jusqu’à cr. Nb >0 et cr.NB<= maxCritere
SaisieCriteres (cr.Criteres ,cr.Nb)
fin
2. Fonction CalculScore (Don TD : TabDC, Don n : Entier, Don TC : TabC) : Réel, récursive
permettant de retourner le score total d’un candidat à partir des valeurs de ses critères
données dans le tableau TD et en utilisant les coefficients donnés dans le tableau TC
n
selon la formule suivante : score total=∑ TD [ i ]∗TC [ i ] .coeff
i=1

Fonction CalculScore (Don TD : TabDC, Don n : Entier, Don TC : TabC) : Réel
Variable i :entier
S : réel
Début
S 0
Pour i de 1 à n faire
SS+ td[i]*tc[i].Coeff
Fin pour
Retourner(S)
fin
3. Procédure InsertCandidat (DonRes cr : Concours, Don c : Candidat) permettant
d’insérer le candidat c dans la liste des candidats du concours cr de telle sorte que la
liste reste toujours triée dans l’ordre décroissant des scores. Cette procédure
commence par calculer le score total du candidat c, puis recherche la position correcte
de l’insertion.

Procédure InsertCandidat (DonRes cr : Concours, Don c : Candidat)


Variable
Début
Si cr.Nbc= maxCand alors
Ecrire(« tableau de candidats saturé »)
sinon
c. ScoreTot CalculScore (c.VCriteres , cr.NB, cr.criteres) 
si cr.Nbc=0 alors
cr.Nbc 1
cr. ListCand [1]c
sinon
//recherche la place d’insertion du candidat
P1
Tant que p<= cr.Nbc et c. ScoreTot <= cr.ListCand[p].ScoreTot faire
P  p+1
Fin tant que
//decalages du sous tableau de la postion p à Nbc
Pour i de cr.Nbc à p pas -1 faire
Cr. ListCand [i+1]  Cr. ListCand [i]
Fin pour
//mettre c à sa position p
Cr. ListCand [p] c
// incrémenter le nb de candidats
Cr.Nbc Cr.Nbc +1
Fin si
Fin si
fin

1 2 3 4
Nom : med ali aymen Qjhjq

ScoreTot : 120 80 55 29
4. Procédure Selectionner (Don cr : Concours, DonRes LR, LA : ListeC) permettant de
mettre la liste des candidats retenus (sélectionnés) dans LR et la liste des candidats en
attente dans LA pour le concours cr donné en paramètre. La procédure doit mettre à
jour le résultat de sélection (ResSelection) de chaque candidat à l’aide de l’une des
valeurs suivantes : (sélectionné, en attente, non sélectionné).
Procédure Selectionner (Don cr : Concours, DonRes LR, LA : ListeC)
Variables i,j : entier
Début
Pour i de 1 à cr. NbPostes faire //exp Nbpostes=70
LR[i] cr.ListCand[i]
Cr.ListCand[i].ResSelection "sélectionné"
Fin pour
j1
Pour i de cr.NbPostes+1 à cr.Nbpostes+cr.NbAttente faire//Nb. Attente=30 de 71 à 100
LA[j] cr.ListCand[i]
jj+1
Cr.ListCand[i].ResSelection "en attente"
Fin pour
Pour i de cr.NbPostes +cr.NbAttente+1 à Cr.Nbc faire//de 101 jusqu’à la fin
Cr.ListCand[i].ResSelection "non sélectionné "
Fin pour
fin

5. Procédure AfficheListeCand (Don LC : ListeC, Don n : Entier) permettant d’afficher la
liste LC des n candidats (CIN, nom, prénom et score) donnée en paramètre.
Procédure AfficheListeCand (Don LC : ListeC, Don n : Entier)
Variable i : entier
Début
Pour i de 1 à n faire
Ecrire("cin : ", LC[i].cin)
Ecrire("nom : ", LC[i].nom)
Ecrire("prénom : ", LC[i].prenom)
Ecrire("score : ", LC[i].ScoreTot)
Fin pour
Fin
6. En utilisant les modules déjà développés, écrivez un algorithme principal nommé
Gestion_Concours permettant de :
 Initialiser un concours Crs.
 Saisir n candidats en utilisant la procédure SaisieCandidat et les insérer dans la liste
des candidats du concours Crs.
 Effectuer la sélection des candidats pour le concours Crs et afficher les listes des
candidats sélectionnés et ceux en attente.
Algorithme Gestion_concours
Variable
Crs :concours
N ,i: entier
LR,LA : ListeC
C :candidat
Début
InitConcours (crs)
Répéter
Ecrire(« Donner le nb de candidats »)
Lire(n)
Jusqu’à n>0 et n<=MaxCand
Pour i de 1 à n faire
SaisieCandidat (c)
InsertCandidat (crs,c)
Fin pour
Selectionner (crs,LR, LA)
Ecrire("candidats retenus : ")
AfficheListeCand (LR, crs. NbPostes)
Ecrire("candidats en attente : ")
AfficheListeCand (LA, crs. NbAttente)
fin

You might also like