program matica_all;
uses crt;
type
typ= array [1..20, 1..20] of char;
procedure prehod_hore_dole
(criadku1, criadku2: byte; var mat: typ; sirka: byte
);
var
w: byte;
pom: char;
begin
for w:=1 to sirka do
begin
pom:=mat[w,criadku1];
mat[w,criadku1]:=mat[w,criadku2];
mat[w,criadku2]:=pom;
end;
end;
procedure prehod_vlavo_vpravo
(cstlpca1, cstlpca2: byte; var mat: typ; sirka: byte
);
var
w: byte;
pom: char;
begin
for w:=1 to sirka do
begin
pom:=mat[cstlpca1, w];
mat[cstlpca1, w]:=mat[cstlpca2, w];
mat[cstlpca2, w]:=pom;
end;
end;
procedure prevratit_maticu_po_diagonale
(var mat: typ; sirka: byte
);
var
x, y: byte;
pom: char;
begin
for y:=1 to sirka do
begin
for x:=1 to sirka-y+1 do
begin
pom:=mat[x, y];
mat[x, y]:=mat[sirka-y+1, sirka-x+1];
mat[sirka-y+1, sirka-x+1]:=pom;
end;
end;
end;
procedure zorad_riadky_podla_abecedy_podla_stlpca
(var mat: typ; sirka: byte; radit_podla_stlpca: byte
);
var
w: byte;
y: byte;
begin
for y:=1 to sirka-1 do
begin
for w:=1 to sirka-y do
begin
if ord
(mat[radit_podla_stlpca, w]
)>ord
(mat[radit_podla_stlpca, w+1]
) then prehod_hore_dole
(w, w+1, mat, sirka
);
end;
end;
end;
var
matica: typ;
x, y, velkost: byte;
a, b: byte;
const
prve_farebne_stlpce=0;
posledne_farebne_stlpce=0;
prve_farebne_riadky=0;
posledne_farebne_riadky=0;
procedure Vypis_maticu;
begin
FOR Y:=1 TO Velkost DO
begin
FOR X:=1 TO Velkost DO
begin
if y<=prve_farebne_riadky then textcolor
(green
);
if y>=Velkost-posledne_farebne_riadky+1 then textcolor
(green
);
if x<=prve_farebne_stlpce then textcolor
(green
);
if x>=Velkost-posledne_farebne_stlpce+1 then textcolor
(green
);
write
(matica[x, y],
' ');
textcolor
(white
);
end;
writeln;
end;
writeln;
end;
begin
clrscr;
write
('velkost matice: ');
readln
(velkost
);
FOR Y:=1 TO Velkost DO
begin
FOR X:=1 TO Velkost DO
begin
//matica[X, Y]:=chr(ord('A')+random(26)); //vygenerovat velke pismena
//matica[X, Y]:=chr(ord('a')+random(26)); //vygenerovat male pismena
matica[X, Y]:=chr
(ord
('1')+random
(9
));
//vygenerovat cisla
end;
end;
Vypis_maticu;
//prevratenie matice zvysle
writeln
('prevratena matica zvysle');
for y:=1 to velkost div 2 do
begin
prehod_hore_dole
(y, velkost-y+1, matica, velkost
);
end;
Vypis_maticu;
//prevratenie matice vodorovne
writeln
('prevratena matica vodorovne');
for x:=1 to velkost div 2 do
begin
prehod_vlavo_vpravo
(x, velkost-x+1, matica, velkost
);
end;
Vypis_maticu;
//zorad_riadky_podla_abecedy_podla_stlpca
writeln
('zorad_riadky_podla_abecedy_podla_stlpca');
zorad_riadky_podla_abecedy_podla_stlpca
(matica, velkost, 1
);
Vypis_maticu;
//prevratit_maticu_po_diagonale
writeln
('prevratit_maticu_po_diagonale');
prevratit_maticu_po_diagonale
(matica, velkost
);
Vypis_maticu;
//prehodit uzivatelom zadane riadky
write
('prehodit riadok ');
readln
(a
);
write
('prehodit s riadkom ');
readln
(b
);
prehod_hore_dole
(a, b, matica, velkost
);
Vypis_maticu;
//prehodit uzivatelom zadane stlpce
write
('prehodit stlpce ');
readln
(a
);
write
('prehodit so stlpcom ');
readln
(b
);
prehod_vlavo_vpravo
(a, b, matica, velkost
);
Vypis_maticu;
readln;
end.