Mei,
Bien j'ai jeté un coup d'oeil:
Il faut corriger la valeur de P en 5 au lieu de 10, car avec 10, MaxT = 2000, et tu utilises systématiquement des boucles de 4000 valeurs (on voit ici l'intérêt de définir des constantes, pour ne pas utiliser de valeurs "magiques" [en clair dans le code], et de les définir l'une par rapport à l'autre).
Il y a de bonnes chances que ton problème vienne de là.
1 2 3 4 5 6 7 8 9 10
| const
Max = 20000;
P = 5; {10}
MaxT = Max div P;
type
TFile = file of Integer;
TInd = array[1..P] of Integer;
TTab = array[1..MaxT] of Integer;
Ch = string[12]; |
Plus loin, dans le programme principal, tu calcules
T1 := HS + (S * 100) + (M * 100 * 60) + (H * 3600 * 100);
avec T1 de type Word : trop petit, dès que H <> 0, on atteint déjà une valeur 360000, alors que Word n'autorise que 65535.
Et ailleurs
1 2 3 4 5 6 7 8 9 10
| procedure IntercMultiple(Nom : Ch; Taille : Integer; TypeTri : Integer);
...
if TypeTri = 1 then
Tri_Permutation(T, Taille)
else if TypeTri = 2 then
Tri_Bulles(T, Taille)
else if TypeTri = 3 then
Tri_Insertion(T, T1, Taille)
else if TypeTri = 4 then
Tri_Quicksort(T, 1,Taille); |
tu as là l'occasion d'utiliser un joli Case of au lieu d'une cascade de if, et là encore, d'utiliser des constantes au lieu de valeurs magiques.
Un reproche, le principal à mon avis : pourquoi avoir utilisé des fichiers binaires au lieu de texte, car pour vérifier leur contenu, il te faut écrire un programme pour les lire et les afficher.
Lié à cela (avec les Seek), c'est effectivement bien compliqué dans ta manière de gérer tout ça.
Je n'ai pas vérifié les procédures de tri.
Partager