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
| type couleur=(Bleu,Blanc,Rouge);
procedure ChargeTab(var t:array of couleur;var long:integer);
var k:integer;
begin
writeln('Veuillez indiquer la longueur du tableau: ');
readln(long);
writeln('Veuillez introduire les couleurs dans le tableau: ');
for k:=1 to long do
readln(t[k]); (* Ici, lors de la compilation,
le compilateur me renvoie cette erreur: Can't read or write variables of this type*)
end;
procedure echange(var x,y:couleur);
var temp:couleur;
begin
temp:=x;
x:=y;
y:=temp;
end;
procedure DrapeauHollandais(var t:array of couleur;n:integer; var dbl,dr:integer);
var k:integer;
begin
dbl:=0;k:=0;dr:=n-1;
while (k<dr) do
begin
if (t[k]=Bleu) then
begin
echange (t[k],t[dbl]);
inc(dbl);inc(k);
end
else if (t[k]=Blanc) then
inc(k)
else
begin
echange(t[k],t[dr]);
dec(dr);
end;
end;
end;
procedure afficheTab(const t:array of couleur;const long:integer);
var k:integer;
begin
for k:=1 to long do
write(t[k],' ');
writeln;
end;
var t:Array of couleur; n,dbl,dr:integer;
begin (* Programme principal*)
ChargeTab(t,n);
afficheTab(t,n);
DrapeauHollandais(t,n,dbl,dr);
afficheTab(t,n);
end. |
Partager