Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Interrogation 1
Durée 1H
Documents et Téléphones portables sont Interdits
Exercice 1 (1+ 0.25 + 1 + 0.25 = 2.5 points). Soit « TrierX » une procédure à deux paramètres
d’entrée (Tableau d’entiers T et sa taille n):
Procédure Trierx (T : Tableau Calcul de complexité (Question 3)
d’entiers, n : entier)
Pour i 0 à n-1 faire Cette boucle se répète n fois mais la boucle imbriquée dépend de
l’indicateur i donc on doit travailler avec la somme
Pour j i+1 à n-1 faire La boucle se répète n-i-1 fois
Si T[i] T[j] alors Le temps de la condition (test et bloc si) est C1
tmp T[i]
T[i] T[j]
T[j] tmp
FSI
FP
FP
12 14 11 15 10
11 14 12 15 10
10 14 12 15 11
10 12 14 15 11
10 11 14 15 12
10 11 12 15 14
10 11 12 14 15
On convient de représenter un nombre binaire (𝑏𝑛 𝑏𝑛 −1 … 𝑏1 𝑏0 ) par une liste linéaire chaînée
unidirectionnelle où chaque élément contient un bit « bi (0, 1) ».
1. Fonction NbOccLLC (L : * Maillon, b : {0, 1}) : entier qui permet de retourner le nombre de
bit « b » (0 ou 1) dans la liste
2. Fonction Convertir10 (L : * maillon) : entier qui permet de convertir le nombre binaire en
un nombre décimal
Rappelons que : 𝑏𝑛 𝑏𝑛 −1 … 𝑏1 𝑏0 2 = 𝑏𝑛 × 2𝑛 + 𝑏𝑛 −1 × 2𝑛 −1 + … + 𝑏1 × 21 + 𝑏0 × 20
Exemple : 101011 2 = 1 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 32 + 8 + 3 +
1 = 43
Indication : vous pouvez utiliser directement ces deux fonctions : Fonction LongLLC(L :*Maillon) : entier
et Fonction Puiss (a, b : entier) : entier.
3. Fonction Impair (L : *Maillon) : booléen qui permet de tester si le nombre binaire est
impair ou non. Rappelons que le bit de poids faible indique la parité du nombre binaire.
4. Procédure CreerLLC(L : * Maillon, x : entier) qui permet de convertir un nombre décimal
en un nombre binaire et construire la liste L. Rappelons que la conversion peut se faire avec
des divisions successives : Diviser le nombre entier « x » et chacun des quotients successifs par
2 jusqu'à obtenir un quotient nul. La suite des restes, dans l'ordre inverse de leur obtention,
donne la représentation du nombre décimal en binaire.
Exemple :
Aroussi Page 2
1. Fonction NbOccLLC (L : * Maillon, b : {0, 1}) : entier
Debut
PL
Cpt 0
TQ (P ≠ Nil ) faire
Si (valeur (P) = b ) alors Cpt ++
P suivant (P)
FTQ
Retourner (Cpt)
Fin
2. Fonction Convertir10 (L : * maillon) : entier
Debut
P L
a LongLLC(L) – 1
S 0
TQ (P ≠ Nil ) faire
S S + valeur (P) * puiss (2, a)
aa-1
P suivant (P)
FTQ
Retourner (S)
Fin
3. Fonction Impair (L : *Maillon) : booléen
Debut
Si L ≠ Nil alors
P L
TQ (suivant (P) ≠ Nil ) faire
P suivant (P)
FTQ
Si valeur (P) = 1 alors retourner (vrai)
FSI
retourner (faux)
Fin
4. Procédure CreerLLC(L : * Maillon, x : entier)
Debut
L Nil
Répéter // il faut utiliser répéter pour prendre en considération le cas de x = 0
b x mod 2
x x div 2
// insertion au debut
allouer (P)
aff_val (P, b)
aff_suiv (P, L)
L P
Jusqu’à ce que (x = 0)
Fin
Aroussi Page 3