4SI-Algorithme et programmation -Corrigé de l’application 3 du « problème du cavalier » 4SI-Algorithme et programmation -Corrigé de l’application 3 du « problème du cavalier »
Corrigé Applica on 3: Problème du cavalier Procédure Generer_fichier (M : Mat, nph2 : chaîne)
Début
# Remplissage d’un tableau d’enregistrements à partir de la matrice M
T.D.N.T T.D.O.G
k0
Nouveaux Types Objet Type /
Algorithme PB_cavalier Mat = Tableau de 8 × 8 entier nature Pour i de 1 à 8 faire T.D.O.L
Début M Mat Pour j de "a" à "h" faire Objet Type / nature
Enreg = Enregistrement
Remplir_matrice ("[Link]", M) ind_col : caractère Remplir_matrice Procédure T[k].ind_lig i k, i Entier
Generer_fichier(M, "[Link]") ind_lig : entier Generer_fichier Procédure T[k].ind_col j j Caractère
num_mov : entier Afficher_solution Procédure T[k].num_mov M[i, j] T Tab
Afficher_solution ("[Link]")
Fin k k + 1 f2 Fich
Fin Tab = Tableau de 64 Enreg Tri Procédure
Fin pour
Fich = Fichier d’Enreg
Fin pour
Tri(T,k) # Tri du tableau d’enregistrements par ordre croissant selon le champ « num_mov »
# Déclaration de la Procédure Remplir_matrice Version1 # Stockage du contenu du tableau trié dans le fichier « [Link] »
Procédure Remplir_matrice (nph1 : chaîne, @ M : Mat) Ouvrir (nph2, f2, "wb")
Début Pour k de 0 à 63 faire
Ouvrir (nph1, ft1 , "r") T.D.O.L Écrire (f2, T[k])
Pour i de 1 à 8 faire Objet Type / nature Fin pour
Lire_ligne (ft1, ch) ft1 Fichier texte Fermer (f2)
Pour j de "a" à "g" faire i, p Entier Fin
p Pos ("˽", ch) j Caractère
M[i, j]Valeur (Sous-chaîne (ch, 0, p)) ch Chaîne
ch Sous-chaîne (ch, p+1, Long(ch)) Procédure Tri (@ T : Tab, n : entier)
Fin pour Début
M[i, "h"] Valeur (ch) #Méthode de tri choisie: tri par insertion T.D.O.L
Fin pour Pour i de 1 à n faire Objet Type / nature
Fermer(ft1) aux T[i] i, j Entier
Fin ji aux Enreg
Tant que (j > 0) ET (aux.num_mov < T[j-1].num_mov) faire
# Déclaration de la Procédure Remplir_matrice Version2 T[j]T[j-1]
Procédure Remplir_matrice (nph1 : chaîne, @ M : Mat) jj-1
Début Fin Tant que
Ouvrir (nph1, ft1 , "r") T.D.O.L T[j] aux
Pour i de 1 à 8 faire Objet Type / nature Fin pour
Lire_ligne (ft1, ch) ft1 Fichier texte Fin
j "a" i, p Entier
ch ch + "˽" j Caractère Procédure Afficher_solution (nph2 : chaîne)
ch Chaîne Début
tant que ch ≠ "˽" faire j de "a" à "g"
p Pos ("˽", ch) Ecrire ("Une solution possible au problème du cavalier est :") T.D.O.L
M[i, j]Valeur (Sous-chaîne (ch, 0, p)) Ouvrir (nph2, fb2, "rb") Objet Type / nature
ch Sous-chaîne (ch, p+1, Long(ch)) Pour k de 0 à 63 faire fb2 Fich
j chr(ord(j)+1) Lire (f2, e) k entier
Fin pour Ecrire (e. ind_col, e. ind_lig, "˽") e Enreg
Fin pour Fin Pour
Fermer (ft1) Fermer (fb2)
Fin Fin
Page 1 sur 2 Année scolaire : 2025/2026 Page 2 sur 2 Année scolaire : 2025/2026