Program Func_type;
uses crt;
type
Tmatr = array [1 .. 10, 1 .. 10] of integer;
Tmass = array [1 .. 10] of integer;
FMax = function(a: Tmatr; m, n: integer): integer;
FMin = function(a: Tmass; n: integer): integer;
var
ma, na, mb, nb, i, j, min: integer;
a, b: Tmatr;
c: Tmass;
{$F+}
function MaxStb(a: Tmatr; m, n: integer): integer;
var
k, max: integer;
begin
for i := 1 to m do
begin
max := a[1, j];
for k := 2 to m do
begin
if a[k, j] > max then
begin
max := a[k, j];
end;
end;
MaxStb := max;
end;
end;
function MinEl(a: Tmass; n: integer): integer;
begin
min := a[1];
for i := 2 to n do
begin
if c[i] < min then
begin
min := c[i];
end;
end;
MinEl := min;
end;
{$F-}
procedure MinChar(a: Tmatr; m, n: integer; F1: FMax; F2: FMin);
begin
for j := 1 to n do
begin
c[j] := F1(a, m, n);
end;
writeln('max elem v stb matr:');
for i := 1 to n do
write(c[i], ' ');
writeln;
readln;
min := F2(c, n);
writeln('MinChar matr=', min);
readln;
end;
begin
clrscr;
write('ma=');
readln(ma);
write('na=');
readln(na);
write('mb=');
readln(mb);
write('nb=');
readln(nb);
randomize;
writeln('matrix A:');
for i := 1 to ma do
begin
for j := 1 to na do
begin
a[i, j] := random(20);
write(a[i, j]:3);
end;
writeln;
end;
readln;
MinChar(a, ma, na, MaxStb, MinEl);
writeln('matrix B:');
for i := 1 to mb do
begin
for j := 1 to nb do
begin
b[i, j] := random(20);
write(b[i, j]:3);
end;
writeln;
end;
readln;
MinChar(b, mb, nb, MaxStb, MinEl);
end.