Vous êtes sur la page 1sur 1

CPGE Informatique MPSI / 1TSI /PCSI

Lydex – neBguérir Programmation Mr L. BOUHOU

TD
Dans un pays, N parties politiques ont présenté leur liste de candidats aux élections (parties politiques numérotées de 1 à N). Ces
élections ont vu la participation de M votants, chacun inscrit le numéro de la partie politique à laquelle il veut voter, dans un bulletin
de vote saisi dans une liste de votes V. V[i] = j signifie que le vote du candidat représenté par le code i( 0 i  M ) est partie pour
la liste j( 1  j N ). Un vote blanc ou annulé n’est pas considéré vote valide et V[i] = 0. Exemple de 25 votants sur 6 parties
politiques :
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
V 3 3 0 2 5 2 3 0 2 1 3 5 5 0 2 3 4 0 0 6 5 5 5 6 6
1-Realiser une fonction AnnulerVote(V,N) qui laisse passer comme paramètre, une liste V et un nombre N (V est la liste des
candidats qui ont voté pour les N parties politique) afin de vérifier si tous les votes sont valide(un vote v<=N sera accepté mais un
vote v>N sera remplacé par 0 pour le considérer annulé)
La suite du problème est composée de deux parties indépendantes
Partie 1
Les résultats des votes sont stockées dans une liste P de taille N+1 où P[i] = j signifie que le nombre de votes valides obtenus par la
liste i est j. P[0] contient le totale des votes blancs ou annulés.
Exemple : Les résultats de l’exemple précédent :
i 0 1 2 3 4 5 6
P 5 1 4 5 1 6 3
Le problème consiste à aider la commission d’organisation des élections à appliquer les règles électorales pour décompter les
résultats, afin de nommer le gagnant majoritaire.
Une partie politique obtenant plus de 50% des voix valides est considérée majoritaire et désignée vainqueur des élections. De
l’exemple précédent, la partie politique qui obtient au moins 11 voix valides gagnera les élections.
2-Ecrire la fonction initialise(N) qui laisse passer, comme paramètre, un nombre N(nombre des parties politique) afin de retourner
une liste initialisée par N+1 zéros(un zéro pour les votes blancs plus N zéro pour chacune des parties politiques).
3- Etablir la fonction score(V,N) qui laisse passer comme paramètre, une liste V et un nombre N (V est la liste des candidats qui ont
voté pour les N parties politique) afin de remplir P par les résultats des votes valides et des votes blancs ou annulés.
4- Faites la fonction nbVoix(P) qui accepte, comme argument, la liste des résultats des votes P afin de retourner le nombre des voix
valides des élections.
5-Ecrire la fonction gagnant1(V,N) qui laisse passer, comme paramètre, la liste des votes (parametre V) et le nombre de partie
politique (parametre N) afin de retourner le gagnant majoritaire(le numéro de la partie politique gagnante) s’il existe sinon la
fonction retourne -1.
Partie 2
Apres décompte des voix dans la liste des votes V, on élimine, les voix non valides en préservant l’ordre des votes.
Exemple : la liste V précédente donne comme nouvelle liste :
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
V2 3 3 2 5 2 3 2 1 3 5 5 2 3 4 6 5 5 5 6 6
6-Ecrire la fonction purger(V) qui laisse passer, comme paramètre, la liste des votes V afin qu’elle retourne une liste V2 dont les
éléments sont ceux de la liste V à laquelle on réalise l’élimination des voix non valides.
7-Etablir la fonction Tri(L) qui accepte, comme argument, une liste d’entier L, afin de trier, en ordre décroissant, les éléments de
cette liste.(la fonction sort() n’est pas autorisée)
8-Ecrire la fonction gagnant2(V,N) qui accepte, comme argument, la liste des votes V initiale (parametre N) et le nombre de partie
politique (parametre N) afin retourner le gagnant majoritaire (le numéro de la partie politique gagnante) s’il existe sinon la fonction
retourne -1.

Vous aimerez peut-être aussi