bonsoir, desolé pour l'absence j'avais quelque probleme.
mais aussi j'ai pu modifier le language, il est maintenant encore plus correct, mais il existe encore des probleme, j'espere que vous pourrait m'aider.
je copier tous mon program pour vous faciliter le travaille
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
program triii;
 
uses fdelay,crt;
type tfile=file of integer;
var r : integer;
    t3,t4 : ttab;
    p : integer;
 
 
procedure initind(var ind:ttab;p:integer);
var i:integer;
begin
     for i:=1 to p do
         ind[i]:=(i-1)*p;
end;
procedure charger(var f:tfile;var t:ttab;p,taille,no:integer);
var i:integer;
begin
    seek(f,(no-1)*taille);
    for i:=1 to taille do
    begin
         read(f,no);
         t[i]:=no;
    end;
end;
procedure sauvegarder(var f:tfile;var t:ttab;p,taille,no:integer);
var i:integer;
begin
     seek(f,(no-1)*taille);
     for i:=1 to taille do
         write(f,t[i]);
end;
function tousmoinsun(var ind:ttab;p:integer):boolean;
var estvide : boolean;
    i : integer;
    t : ttab;
begin
     estvide:=true;i:=1;
     while(i<=n) and (estvide) do
     begin
          if t[i]<>-1 then estvide:=false
                      else i:=i+1;
     end;
     tousmoinsun:=estvide;
end;
procedure chercher_min(var f1:tfile;var ind:ttab;var min,place:integer);
var i,x : integer;
begin
     i:=1;
     while(i<=p) and (ind[i]=-1) do
                 i:=i+1;
     place:=i;
     seek(f1,ind[place]);
     read(f1,min);
     i:=i+1;
     while (i<=p) do
     begin
           if (ind[i]=-1) then i:=i+1
                           else begin
                                     seek(f1,ind[i]);
                                     read(f1,x);
                                     if (x<min) then begin
                                                               min:=x;
                                                               place:=i;
                                                          end
                                     else i:=i+1;
                           end;
     end;
end;
procedure segmentation(var t:ttab;bi,bs:integer;var place:integer);
var pivot,i,j,x : integer;
begin
     pivot:=t[bi];
     i:=bi+1;j:=bs;
     while (i<=j) do
     begin
          if t[i]<pivot then i:=i+1
          else begin
                    if t[i]>pivot then j:=j-1
                    else if i<j then begin
                                          x:=t[i];
                                          t[i]:=t[j];
                                          t[j]:=x;
                                          j:=j-1;
                                          i:=i+1;
                                     end;
                end;
     end;
     x:=t[bi];
     t[bi]:=t[j];
     t[j]:=x;
     place:=j;
end;
procedure tri_quicksort(var t:ttab;bi,bs:integer);
var place : integer;
begin
     if bi<bs then begin
                        segmentation(t,bi,bs,place);
                        tri_quicksort(t,bi,place-1);
                        tri_quicksort(t,place+1,bs);
                   end;
end;
procedure tri_intermult(nom:char);
const p=4;
var t,ind : ttab;
    f1,f2 : tfile;
    fini : boolean;
    i,taille,min,place : integer;
begin
     {$i-}
     assign(f1,nom);
     reset(f1);
     {$i+}
     if Ioresult<>0 then begin
                              writeln('erreur');
                              halt(1);
                         end;
     initind(ind,p);
     for i:=1 to p do
     begin
          charger(f1,t,p,taille,i);
          tri_quicksort(t,1,taille);
          sauvegarder(f1,t,p,taille,i);
     end;
     fini:=false;
     while(not fini) do
     begin
          chercher_min(f1,ind,min,place);
          write(f2,min);
          ind[place]:=ind[place]+1;
          if (ind[place]=place*taille)
             then ind[place]:=-1;
          fini:=tousmoinsun(ind,p);
     end;
     close(f1);
 
     close(f2);
     rename(f2,nom);
end;
 
 
 
begin
clrscr;
 
writeln('tapez entrer pour commencer le random ');
readln;
 
 
randomize;
for r:=1 to n do
begin
     t3[r]:=random(n);
     writeln(t3[r]);
end;
 
 
 
tri_intermult('0');
 
writeln('voici le trie : ');
readln;
 
for r:=1 to n do
    writeln(t4[r]);
 
readln;
end.