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
| program tri_mat;
uses
wincrt;
type
mat = array[1..10, 1..10] of integer;
var
t: mat;
x, y: integer;
procedure lecture(var x, y: integer);
begin
repeat
Write('x= ');
readln(x);
until x in [1..10];
repeat
Write('y= ');
readln(y);
until y in [1..10];
end;
procedure remplire(var t: mat; x, y: integer);
var
i, j: integer;
begin
for i := 1 to y do
for j := 1 to x do
begin
Write('t[', j, ',', i, ']= ');
readln(t[j, i]);
end;
end;
procedure permut(var a, b: integer);
var
aux: integer;
begin
aux := a;
a := b;
b := aux;
end;
procedure tri(var t: mat; x, y: integer);
var
i, j: integer;
verif1, verif2: boolean;
begin
repeat
verif2 := True;
verif1 := True;
for i := 1 to y - 1 do
if t[x, i] < t[1, i + 1] then
begin
permut(t[x, i], t[1, i + 1]);
verif2 := False;
end;
for j := 1 to y do
begin
for i := 1 to x - 1 do
if t[i, j] < t[i + 1, j] then
begin
permut(t[i, j], t[i + 1, j]);
verif1 := False;
end;
end;
until (verif1 = True) and (verif2 = True);
end;
procedure affiche(t: mat; x, y: integer);
var
i, j: integer;
begin
for j := 1 to y do
for i := 1 to x do
begin
Write(' ', t[i, j], ' ');
if i = x then
writeln(' ');
end;
end;
begin
lecture(x, y);
writeln('x= ', x, ' y= ', y);
remplire(t, x, y);
writeln(' ');
writeln('la matrice donnée');
affiche(t, x, y);
tri(t, x, y);
writeln('la matrice triée');
affiche(t, x, y);
end. |