Vous êtes sur la page 1sur 2

Université Ibn Zohr

Faculté des Sciences d’Agadir


Département d’Informatique
A.U : 2017 / 2018

Examen de Session de Rattrapage d’Algorithmique 2


Filière : SMI3
Durée : 1h30 - Documents non autorisés
Important :
 Lire tout l’énoncé de l’examen avant de commencer à répondre.
 L’ordre de difficulté des exercices n’est pas nécessairement croissant.
 Le prêt de tout matériel entre étudiants est formellement interdit.

Exercice 1: [5 points][~ 15 minutes]


1. Soit T un tableau d’entiers de taille N. Ecrire une fonction PAIR_IMP qui range les éléments pairs du
tableau T en premiers et les éléments impairs en dernier.
Remarque : le tableau n’est pas nécessairement trié.
Exemple : Avant la fonction PAI_IMP : T[] = {3,4,1,2,9}
Après la fonction PAI_IMP : T[] = {4,2,3,1,9} ou {2,4,1,3,9} ou …
2. Ecrire une fonction MinMax qui détermine quelle est la valeur minimale et la valeur maximale d’un
tableau d’entiers Tab de taille N. La fonction MinMax ne doit rien afficher.
Exercice 2: [5 points][~ 25 minutes]
 une chaine de caractères est un tableau de caractères qui se termine par le caractère ‘\0’.
 Les mots d’une chaine de caractères sont séparés par le caractère espace ‘ ‘
 Dans une chaine de caractères, on n’a pas des espaces successifs.
 Une chaine de caractères ne commence pas par un espace et ne se termine pas par un espace.
1. Ecrire une fonction NB_Mot qui retourne le nombre de mots dans une chaine de caractères ch.
Exemple: si ch = “A l’ examen de la section SMI3” alors la fonction NB_Mot doit retourner 6
(“l’examen” est considéré comme un seul mot).
2. Ecrire une fonction Decal_lettre_chaine qui décale de n positions les lettres d’une chaine de caractère
ch de longueur L (on suppose que n < L). Le résultat est rangé dans une chaine CHD. L’entete est:
Fonction Decal_lettre_chaine(ch[]:caracatere,L:Entier,n:Entier,CHD[]:caractere):vide
Exemple: si ch = “Rattrapage” et n=2 alors CHD = “geRattrapa”

Exercice 3: Algorithme de Kaprekar [8 points][~ 40 minutes]


Soit n un nombre composé de 4 chiffres (entre 1000 et 9999).
1. Ecrire une fonction Gr qui prend en paramètre un entier naturel n et qui retourne le plus grand nombre
qu’on peut former par les 4 chiffres de n.
Exemple: si n = 3758 alors le plus grand nombre est 8753.
2. Ecrire une fonction Pt qui prend en paramètre un entier naturel n et qui retourne le plus petit nombre
qu’on peut former par les 4 chiffres de n.
Exemple: si n = 3758 alors le plus petit nombre est 3578 et si n = 2075 alors plus petit nombre est 0275.
3. En déduire la fonction K qui prend en paramètre un entier naturel n et qui soustrait le plus petit nombre
qu’on peut former à partir de n au plus grand nombre qu’on peut former à partir de n.
Ex: si n = 3758 alors K(3758) retourne 8753 – 3578 = 5175
4. L’algorithme de Kaprekar consiste à répéter des itérations à partir d’un nombre initial N donné tel que :
 A chaque itération, on calcule K(N).
 On itère ensuite le processus en remplaçant la valeur de N par celle de K(N).
 On arrête les itérations si l’une des 3 situations suivantes est atteinte :
 Le nombre K(N) obtenu à l'issue de l’itération en cours est nul,

Examen d’Algorithmique 2, Session Rattrapage – Filière SMI3 ; A.U : 2017-2018 Page 1 / 2


Université Ibn Zohr
Faculté des Sciences d’Agadir
Département d’Informatique
A.U : 2017 / 2018
 Le nombre K(N) obtenu à l'issue de l’itération en cours a été obtenu pendant une
itération précédente.
 Le nombre d'itérations déjà réalisées dépasse une valeur maximale MAX prédéfinie.
On suppose que la variable MAX est une entrée de l’algorithme.
Exemple : à partir du nombre N = 5463 et MAX = 5 en appliquant l’algorithme de Kaprekar on
obtient les itérations suivantes :
Iter 1 : 6543 – 3456 = 3087
Iter 2 : 8730 – 0378 = 8352
Iter 3 : 8532 – 2358 = 6174
Iter 4 : 7641 – 1467 = 6174

Remarque : On décomposera toujours le nombre obtenu au fil des itérations en 4 chiffres (par
exemple, 378 se décompose en (0, 3,7,8) et non pas en (3,7,8) ).

1. Ecrire un algorithme qui lit un entier naturel N de 4 chiffres, puis lui applique
l’algorithme de Kaprekar. L’algorithme doit afficher à chaque itération la valeur de K(N).
2. Appliquer l’algorithme de Kaprekar si MAX = 5 pour
a. N = 1438
b. N = 5095
c. N = 635 (adapter l’algorithme à un nombre à 3 chiffres).

Exercice 4: [2 points][~ 10 minutes]


Soit T un tas max de taille n (dernier élément du tas est à l'indice n-1).
Ecrire la fonction aj_Elm_Tas vue au cours, qui ajoute un élément de valeur v au tas max T de sorte que T
reste un tas max après l’ajout de l’élément v. La fonction doit avoir l’entete suivant:
Fonction aj_Elm_Tas(T[]: Entier, n: Entier, v: Entier): vide

Examen d’Algorithmique 2, Session Rattrapage – Filière SMI3 ; A.U : 2017-2018 Page 2 / 2