correction EVALUATION EN ALGORITHMIQUE TEST 10/ XX
CORRECTION
Exercice 1 : MAX / MIN dans un vecteur (6 pts)
On veut lire un vecteur V de taille n avec 1 ≤ n ≤ 50, puis déterminer : MAX, MIN et leurs positions de première apparition.
Algorithme Max_Min
Algorithme Max_Min ;
Const Nmax = 50 ;
Var
V : tableau[1..Nmax] de reel ;
n, i, Imax, Imin : entier ;
max, min : reel ;
Debut
Repeter
Ecrire('Donner la dimension du vecteur (1..50)') ;
Lire(n) ;
Jusqu'a (n >= 1 ET n <= 50) ;
Pour i de 1 a n faire
Ecrire('V[', i, '] = ') ;
Lire(V[i]) ;
FinPour
max <- V[1] ;
min <- V[1] ;
Imax <- 1 ;
Imin <- 1 ;
Pour i de 2 a n faire
Si (V[i] > max) alors
max <- V[i] ;
Imax <- i ;
SinonSi (V[i] < min) alors
min <- V[i] ;
Imin <- i ;
FinSi
FinPour
Ecrire('La valeur maximale est : ', max, ' position : ', Imax) ;
Ecrire('La valeur minimale est : ', min, ' position : ', Imin) ;
Fin.
NB (piège examen) : on utilise > et < (pas >= ou <=) afin de conserver la première apparition.
Problème 16 pts : Corrections des 8 sous-problèmes
1) Somme des N premiers entiers
Algorithme Somme_N ;
Var
i, N, S : entier ;
Debut
Ecrire('Donner un entier N >= 1') ;
Repeter
Lire(N) ;
Jusqu'a (N >= 1) ;
S <- 0 ;
Pour i de 1 a N faire
S <- S + i ;
FinPour
Ecrire('Somme des ', N, ' premiers entiers = ', S) ;
Fin.
2) Minimum et maximum dans N nombres
Algorithme MinMax_Ensemble ;
Var
i, N : entier ;
x, min, max : entier ;
Debut
Ecrire('Donner N > 0') ;
Repeter
Lire(N) ;
Jusqu'a (N > 0) ;
Ecrire('Donner la valeur 1 : ') ;
Lire(x) ;
min <- x ;
max <- x ;
Pour i de 2 a N faire
Ecrire('Donner la valeur ', i, ' : ') ;
Lire(x) ;
Si (x > max) alors
max <- x ;
SinonSi (x < min) alors
min <- x ;
FinSi
FinPour
Ecrire('Min = ', min, ' ; Max = ', max) ;
Fin.
3) Quotient et reste de A/B sans division
Algorithme Quotient_Reste ;
Var
A, B, Q, R : entier ;
Debut
Ecrire('Donner A et B (B > 0)') ;
Repeter
Lire(A, B) ;
Jusqu'a (B > 0) ;
Q <- 0 ;
R <- A ;
Tantque (R >= B) faire
R <- R - B ;
Q <- Q + 1 ;
FinTantque
Ecrire('Quotient = ', Q) ;
Ecrire('Reste = ', R) ;
Fin.
4) Produit de deux entiers avec uniquement des additions
Algorithme Produit_Addition ;
Var
A, B, P, i : entier ;
Debut
Ecrire('Donner A et B (B >= 0)') ;
Repeter
Lire(A, B) ;
Jusqu'a (B >= 0) ;
P <- 0 ;
Pour i de 1 a B faire
P <- P + A ;
FinPour
Ecrire('Produit = ', P) ;
Fin.
Version optimisée (moins d’itérations)
Algorithme Produit_Addition_Optim ;
Var
A, B, P, i : entier ;
Debut
Ecrire('Donner A et B (A >= 0 et B >= 0)') ;
Repeter
Lire(A, B) ;
Jusqu'a (A >= 0 et B >= 0) ;
Si (A = 0 ou B = 0) alors
P <- 0 ;
SinonSi (A < B) alors
P <- 0 ;
Pour i de 1 a A faire
P <- P + B ;
FinPour
Sinon
P <- 0 ;
Pour i de 1 a B faire
P <- P + A ;
FinPour
FinSi
Ecrire('Produit = ', P) ;
Fin.
5) Tester si A est divisible par B (A, B positifs)
Algorithme Divisible ;
Var
A, B, R : entier ;
Debut
Ecrire('Donner A > 0 et B > 0') ;
Repeter
Lire(A, B) ;
Jusqu'a (A > 0 et B > 0) ;
R <- A ;
Tantque (R > 0) faire
R <- R - B ;
FinTantque
Si (R = 0) alors
Ecrire(A, ' est divisible par ', B) ;
Sinon
Ecrire(A, ' n''est pas divisible par ', B) ;
FinSi
Fin.
6) Diviseurs d’un entier X
Algorithme Diviseurs_X ;
Var
X, i, M : entier ;
Debut
Ecrire('Donner X > 0') ;
Repeter
Lire(X) ;
Jusqu'a (X > 0) ;
Ecrire('Diviseurs de ', X, ' :') ;
M <- X DIV 2 ;
Pour i de 1 a M faire
Si (X MOD i = 0) alors
Ecrire(i) ;
FinSi
FinPour
Ecrire(X) ;
Fin.
7) Tester si X est premier
Algorithme EstPremier ;
Var
X, i, M : entier ;
pr : booleen ;
Debut
Ecrire('Donner X > 0') ;
Repeter
Lire(X) ;
Jusqu'a (X > 0) ;
Si (X = 1) alors
pr <- FAUX ;
Sinon
pr <- VRAI ;
M <- X DIV 2 ;
i <- 2 ;
Tantque (i <= M ET pr) faire
Si (X MOD i = 0) alors
pr <- FAUX ;
FinSi
i <- i + 1 ;
FinTantque
FinSi
Si (pr) alors
Ecrire(X, ' est premier') ;
Sinon
Ecrire(X, ' n''est pas premier') ;
FinSi
Fin.
8) Somme des chiffres d’un entier naturel N
Algorithme SommeChiffres ;
Var
N, R, S : entier ;
Debut
Ecrire('Donner un entier naturel N >= 0') ;
Repeter
Lire(N) ;
Jusqu'a (N >= 0) ;
S <- 0 ;
R <- N ;
Tantque (R > 0) faire
S <- S + (R MOD 10) ;
R <- R DIV 10 ;
FinTantque
Ecrire('Somme des chiffres de ', N, ' = ', S) ;
Fin.
Par Mr Joel_Yankam | Contact :+237652027193