Faculté des sciences Oujda Examen Blanc IA – S2
Examen Blanc d’Algorithmique – IA S2
Durée : 1h30 – Aucun support autorisé
Réponses attendues en algorithme structuré (pas de langage C)
Exercice 1 – (5 pts)
Vous êtes chargé de développer une fonctionnalité de tri des candidatures pour un
concours d’admission. Chaque candidat possède plusieurs informations, mais seules cer-
taines sont utiles pour le classement. Les données sont stockées dans un tableau non trié
transmis par une autre équipe.
1. Proposez les champs que chaque enregistrement candidat devrait contenir pour
répondre au besoin décrit.
2. On souhaite trier les candidats par ordre décroissant de moyenne.
Voici un algorithme censé utiliser le tri, mais il ne fonctionne pas correctement.
Repérez les erreurs et proposez une version corrigée :
Pour i de 1 à n faire
Pour j de 0 à n - 1 faire
Si T[j+1].moyenne > T[j].moyenne alors
échanger(T[j], T[j+1])
FinPour
FinPour
3. Que se passe-t-il si l’on compare par erreur les noms au lieu des moyennes ? Quel
impact cela aurait sur le classement ? Que faut-il faire si deux candidats ont la même
moyenne ?
4. Au lieu de trier tout le tableau, un manager propose de rechercher directement
le candidat avec la meilleure note. Est-ce plus efficace ? Justifiez en évoquant la
complexité du problème.
Exercice 2 – (5 pts)
Un concours d’admission utilise un système de notation particulier basé sur l’ancien-
neté du dossier. Plus un dossier a été traité tôt, plus la pénalité est faible. Un programmeur
a tenté d’implémenter ce système sous forme d’une fonction récursive :
fonction pénalité(n : entier) : entier
Si n = 0 alors
retourner 0
FinSi
Si n mod 2 = 0 alors
retourner pénalité(n - 2) + 2
1
Faculté des sciences Oujda Examen Blanc IA – S2
Sinon
retourner pénalité(n - 1) + 1
FinSi
Fin
1. Que fait réellement cette fonction ? Exprimez le résultat retourné en fonction de n.
2. Identifiez les erreurs potentielles dans l’implémentation. Cette fonction est-elle cor-
recte pour tous les cas ? Pourquoi ?
3. Proposez une version récursive terminale de cette fonction et expliquez pourquoi
elle est plus efficace.
Exercice 3 – (5 pts)
Le service d’examen vous transmet un fichier contenant la liste des notes obtenues par
les candidats à un concours.
Ce fichier peut contenir des zones corrompues : une séquence inhabituelle de notes
nulles (0) enregistrées à la suite.
On souhaite détecter automatiquement s’il existe un bloc d’au moins k notes nulles
consécutives.
1. Proposez une manière de représenter ces données en mémoire. Quel type de structure
de données, et quel format de fichier conviendraient ? Justifiez vos choix.
2. Écrire un algorithme qui lit ce fichier, extrait les données utiles, et retourne Vrai
s’il existe 5 notes nulles consécutives.
3. Où se situe l’erreur si le compteur utilisé pour détecter les zéros n’est pas réinitialisé
correctement ? Donnez un exemple.
4. Adapter votre algorithme pour que le nombre de zéros recherchés (k) soit lu dyna-
miquement depuis le fichier ou en entrée.
5. Proposer un algorithme qui écrit dans un second fichier uniquement les séquences
valides, en éliminant les blocs suspects détectés.
Exercice 4 – (5 pts)
à découvrir ˆˆ