const n = 3;
type TMatr = array[1..n, 1..n] of real;
var A: Tmatr;
minRow, minCol, maxRow, MaxCol : integer;
s: real;
{=========================================}
procedure VvodMatr(var A: TMatr);
var i, j: integer;
begin writeln('Vvedite matricy postrochno: ');
for i:=1 to n do
begin for j:=1 to n do read(a[i,j]);
readln;
end;
end;
{-----------------------------------}
{ Poisk koordinat Min i Max elementa matrici }
procedure FindMinMax(A: TMatr; var MinRow, MinCol, MaxRow, MaxCol: integer);
var i, j: integer;
begin MinRow := 1; MinCol := 1;
MaxRow := 1; MaxCol := 1;
for i:=1 to n do
for j:=1 to n do
begin
if A[i,j]>A[MaxRow, MaxCol] then begin MaxRow := i; MaxCol := j;
end;
if A[i,j]<A[MinRow, MinCol] then begin MinRow := i; MinCol := j;
end;
end;
end;
{----------------------------------------------}
{Умножение i строки на j столбец - если конечно я правильно помню смысл скал произв-я}
function SkMult(A: TMatr; i, j: integer): real;
var k: integer; SkM: real;
begin
SkM := 0;
for k:=1 to n do
SkM := SkM + A[i,k]*A[k,j];
SkMult := SkM;
end;
begin
VvodMatr(A);
FindMinMax(A,MinRow, MinCol, MaxRow, MaxCol);
writeln('Max el: A[', MaxRow,',',MaxCol,'] = ', A[MaxRow,MaxCol]:10:2);
writeln('Min el: A[', MinRow,',',MinCol,'] = ', A[MinRow,MinCol]:10:2);
s := SkMult(A, MaxRow, MinCol);
writeln(' Skal proizv ', s:10:2); readln;
end.