Vous êtes sur la page 1sur 5

Proposition de correction du devoir de synthèse N°3 : Algorithmique et Programmation

4ème Sciences de l’Informatique

Barème /40
Exercice N°1 (8 points)
1) Fonction Inconnu (Ch : Chaine, Test :Booléen) : Booléen 0.5*3
2)
Appel Résultat
Inconnu ("1259", ord("1") < ord("2") ) VRAI 0.5
Inconnu ("ZFBA", ord("Z") < ord("F")) VRAI 0.5
Inconnu ("1A5a", ord("1") < ord("A")) FAUX 0.5

3) Déduire le rôle de la fonction Inconnu.


Vérifier si une chaine est triée dans un ordre donné croissant ou décroissant selon la valeur du
paramètre Test. 1
4) Soit Mat une matrice contenant N lignes et M colonnes de caractères. En utilisant la fonction Inconnu,
écrire l’algorithme d’un module qui permet d’afficher uniquement les colonnes de cette matrice pour
lesquelles cette fonction retourne vrai.
Procédure Afficher (Mat : Matrice , N,M : Entier) 0.5
Début
Pour j de 0 à M-1 Faire 0.5
Ch ← "" 0.25
Pour i de 0 à N-1 Faire 0.5
Ch ← Ch + Mat[i,j] 0.5
Fin Pour
Si Inconnu (Ch , Ch[0]<Ch[1]) Alors 0.75
Ecrire_nl (Ch) 0.5
Fin Si
Fin Pour
Fin
T.D.O.L (0.5)
Objet Type/Nature
i, j Entier
Ch Chaîne
Inconnu Fonction
Exercice N°2 (10 points)
Procédure Remplir (N : Entier) 0.5
Début
Ouvrir ("detail.dat", F, "wb") 1
H ← 100 / N 0.5
X←0 0.5
Pour i de 1 à N Faire 0.75
e.Surface ← H * racine_carré((2/3)*X + cos(X)) 1.5
e.cout ← e.Surface * 57.500 0.5
Page 1 sur 5
d← e.Surface / 3 0.5
Si Ent (d) ≠ d Alors # exemple : 3.2 jours donnent 4 jours 0.5
e.duree ← Ent(d)+1 0.5
Sinon
e.duree ← Ent(d) 0.5
Fin Si
Ecrire (F, e) 1
X←X+H 0.5
Fin Pour
Fermer(F) 0.5
Fin
T.D.O.L (0.75)
Objet Type/Nature
F Fichier de Enr
i Entier
e Enr
d, X,H Réel
Exercice N°3 (10 points)
1) (2 points)
Fonction Verif_ligne ( M :MAT , L : Entier ) : Booléen
Début
Ch ← "" 0.25
i←0 0.25
Tant que i < 9 Et Pos (Convch (M[L , i]),Ch) = -1 Faire 0.5
Ch ← Ch + Convch (M[L , i]) 0.25
i←i+1 0.25
Fin Tant que
Retourner i = 9 0.25
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch Chaine
i Entier
2) (2 points)
Fonction Verif_colonne ( M :MAT , C : Entier ) : Booléen
Début
Ch ← "" 0.25
i←0 0.25
Tant que i < 9 Et Pos (Convch (M[i, C] ), Ch) = -1 Faire 0.5
Ch ← Ch + Convch (M[i , C]) 0.25
i←i+1 0.25
Fin Tant que
Retourner i = 9 0.25
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch Chaine
i Entier

Page 2 sur 5
3) (3 points)
Fonction Verif_Region ( M :MAT , L,C : Entier ) : Booléen
Début
Ch ← "" 0.25
Test ← Vrai 0.25
i←L 0.25
Tant que i < L+3 Et Test Faire 0.25
j←C 0.25
Tant que i < C+3 Et Test Faire 0.25
Test ← Pos (Convch (M[i, j] ), Ch) = -1 0.5
Ch ← Ch + Convch (M[i , j]) 0.25
j←j+1 0.25
Fin Tant que
i←i+1 0.25
Fin Tant que
Retourner Test
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch Chaine
Test Booléen
i,j Entier
4) (3 points)
Fonction Verif_SUDOKU ( M :MAT ) : Booléen
Début
i←0 0.25
Test ← Vrai 0.25
Tant que i < 9 Et Test Faire 0.25
Test ← Verif_Ligne (M,i) Et Verif_Colonne (M,i) 0.25
i←i+1 0.25
Fin Tant que
i←0 0.25
Tant que i < 9 Et Test Faire 0.25
j←0 0.25
Tant que j < 9 Et Test Faire 0.25
Test ← verif_Region(M , i , j) 0.25
j←j+3 0.25
Fin Tant que
i←i+3 0.25
Fin Tant que
Retourner Test
Fin
T.D.O.L
Objet Type/Nature
Ch Chaine
Test Booléen
i,j Entier
Verif_ligne, Fonction
Verif_colonne Fonction
Verif_Region Fonction

Page 3 sur 5
Exercice N°4 (12 points)
1) (4 points)
Fonction Ajouter1 ( A : Chaine) : Chaine 0.25
Début
Ch1 ← "" 0.25
R←0 0.25
B ← "1"
Tanque long(B) < Long(A) Faire 0.25
B ← "0" + B 0.25
Fin Tant que
Pour i de long(A)-1 à 0 (Pas= -1)Faire 0.25
X ← R + valeur(B[i])+ valeur(A[i]) 0.25
Si X > 1 Alors 0.25
X ← X-2 0.25
R←1 0.25
Sinon
R← 0 0.25
Fin Si
Ch1 ← Convch(X) + Ch1 0.25
Fin Pour
Si R = 1 Alors 0.25
Ch1 ← "1" + Ch1 0.25
Fin Si
Retourner Ch1 0.25
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch1,B Chaine
i , X,R Entier
2) (2.5 points)
Fonction Inverser ( B : Chaine) : Chaine 0.25
Début
Ch1 ← "" 0.25
Pour i de 0 à long (B) -1 Faire 0.25
Si B[i]= "0" Alors 0.25
Ch1 ← Ch1 + "1" 0.25
Sinon
Ch1 ← Ch1 + "0" 0.25
Fin Si
Fin Pour
Retourner Ajouter1(Ch1) 0.75
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch1 Chaine
Ajouter1 Fonction
i Entier

Page 4 sur 5
3) (2 points)
Procédure Aligner ( @ A,B : Chaine) 0.5
Début
Tant que long(A) ≠ Long (B) Faire 0.25
Si Long(A) < Long(B) Alors 0.25
A ← A[0] +A[0]+ Sous_Chaine (A,1,long(A)) 0.5
Sinon
B ← B[0] +B[0]+ Sous_Chaine (B,1,long(B)) 0.5
Fin Si
Fin Tant que
Fin
4) (3.5 points)
Fonction Différence( A,B : Chaine) :Chaine 0.25
Début
B ← Inverser(B) 0.25
Aligner (A,B) 0.25
Ch1 ← "" 0.25
R←0 0.25
Pour i de long(A)-1 à 0 (Pas= -1)Faire 0.25
X ← R + valeur(B[i])+ valeur(A[i]) 0.25
Si X > 1 Alors 0.25
X ← X-2 0.25
R←1 0.25
Sinon
R← 0 0.25
Fin Si
Ch1 ← Convch (X) + Ch1 0.25
Fin Pour
Retourner Ch1 0.25
Fin
T.D.O.L (0.25)
Objet Type/Nature
Ch1 Chaine
i , X,R Entier
Inverser Fonction
Aligner Procédure

Page 5 sur 5

Vous aimerez peut-être aussi