EVALUATION EN ALGORITHMIQUE TEST 09/ XX
Exercice 1 : 5 points
- Écrire un algorithme qui lit un entier et compte le nombre de 1 dans la représentation binaire de cet entier. (1 pt)
- Écrire un algorithme qui lit un tableau d’entiers de n éléments et donne la plus grande et la plus petite valeur du tableau. (2 pts)
- Écrire un algorithme qui permet de déterminer si les éléments d’un tableau d’entiers sont tous consécutifs ou non. (2 pts)
Exemple :
- 7, 8, 9, 10 → consécutifs
- 7, 9, 10, 11 → non consécutifs
On suppose que le tableau et sa taille sont connus.
Exercice 2 : 5 points
- Considérons le programme suivant qui classe un tableau Tab de Max entiers :
Programme Tri(tab, Max)
Debut
Pour i de 1 a Max-1 faire
Pour j de 1 a Max-1-i faire
Si Tab[j] > Tab[j+1] Alors
Permutation(Tab, j, j+1)
FinSi
FinPour
FinPour
Fin
- Réécrire ce programme avec des boucles Tantque. (1 pt)
- Écrire la procédure Permutation et préciser le passage des paramètres. (1 pt)
- Écrire un algorithme qui lit une matrice A et vérifie si elle est symétrique. (1 pt)
- Soit l’algorithme suivant : (2 pts)
Algorithme
Var SOMME, NOTE : reels ; REPONSE : texte
Debut
SOMME <- 0
Ecrire("Voulez vous saisir une note O/N")
Lire(REPONSE)
Tant que REPONSE = "O" Faire
Lire(NOTE)
SOMME <- SOMME + NOTE
Ecrire("Voulez vous saisir une autre note O/N")
Lire(REPONSE)
FinTantQue
Ecrire("La somme des notes est de ", SOMME)
Fin
- Que fait cet algorithme ? (0,5 pt)
- Si l’utilisateur saisit 3 puis 4 puis 12, quelle est la valeur finale de SOMME ? (0,5 pt)
- L’utilisateur peut-il ne saisir aucune note ? (0,5 pt)
- Comment l’utilisateur peut-il arrêter la saisie ? (0,5 pt)
CORRECTION
Exercice 1 (5 pts)
1) Compter le nombre de 1 dans l’écriture binaire (1 pt)
Idée : Diviser le nombre par 2 et compter les restes égaux à 1.
Algorithme CompterBits1
Var
n, nb1 : entier
Debut
Lire(n)
nb1 <- 0
Tantque (n > 0) Faire
Si (n MOD 2 = 1) Alors
nb1 <- nb1 + 1
FinSi
n <- n DIV 2
FinTantque
Ecrire("Nombre de 1 =", nb1)
Fin
Remarque : si n = 0, alors nb1 = 0.
2) Minimum et maximum d’un tableau (2 pts)
Algorithme MinMaxTableau
Const NMAX = 100
Var
T : tableau[1..NMAX] d'entier
n, i, min, max : entier
Debut
Lire(n)
Pour i de 1 a n Faire
Lire(T[i])
FinPour
min <- T[1]
max <- T[1]
Pour i de 2 a n Faire
Si (T[i] < min) Alors min <- T[i] FinSi
Si (T[i] > max) Alors max <- T[i] FinSi
FinPour
Ecrire("Min =", min, " Max =", max)
Fin
3) Tableau consécutif (2 pts)
Algorithme TableauConsecutif
Const NMAX = 100
Var
T : tableau[1..NMAX] d'entier
n, i, j, tmp : entier
ok : booleen
Debut
Lire(n)
Pour i de 1 a n Faire
Lire(T[i])
FinPour
Pour i de 1 a n-1 Faire
Pour j de 1 a n-i Faire
Si (T[j] > T[j+1]) Alors
tmp <- T[j]
T[j] <- T[j+1]
T[j+1] <- tmp
FinSi
FinPour
FinPour
ok <- VRAI
Pour i de 1 a n-1 Faire
Si (T[i+1] <> T[i] + 1) Alors
ok <- FAUX
FinSi
FinPour
Si (ok) Alors
Ecrire("Elements consecutifs")
Sinon
Ecrire("Elements non consecutifs")
FinSi
Fin
Exercice 2 (5 pts)
1.a) Tri avec Tantque (1 pt)
Programme Tri_Tantque(Tab, Max)
Var i, j : entier
Debut
i <- 1
Tantque (i <= Max - 1) Faire
j <- 1
Tantque (j <= Max - i) Faire
Si (Tab[j] > Tab[j+1]) Alors
Permutation(Tab, j, j+1)
FinSi
j <- j + 1
FinTantque
i <- i + 1
FinTantque
Fin
1.b) Procédure Permutation (1 pt)
Passage : Tab est passé par Var car il est modifié.
Procedure Permutation(Var Tab : tableau d'entiers, i, j : entier)
Var tmp : entier
Debut
tmp <- Tab[i]
Tab[i] <- Tab[j]
Tab[j] <- tmp
Fin
2) Matrice symétrique (1 pt)
Algorithme MatriceSymetrique
Const NMAX = 50
Var
A : tableau[1..NMAX,1..NMAX] d'entier
n, i, j : entier
sym : booleen
Debut
Lire(n)
Pour i de 1 a n Faire
Pour j de 1 a n Faire
Lire(A[i,j])
FinPour
FinPour
sym <- VRAI
Pour i de 1 a n Faire
Pour j de i+1 a n Faire
Si (A[i,j] <> A[j,i]) Alors
sym <- FAUX
FinSi
FinPour
FinPour
Si (sym) Alors
Ecrire("Matrice symetrique")
Sinon
Ecrire("Matrice non symetrique")
FinSi
Fin
3) QCM (2 pts)
3.1) Réponse : B) Il calcule la somme des notes.
3.2) 3 + 4 + 12 = 19 → Réponse C
3.3) Oui, si l’utilisateur répond directement N → Réponse A
3.4) En tapant "N" → Réponse A
Par Mr Joel_Yamkam | Contact :+237652027193