uses crt;
const m=5; {описуем константу, размер будущей матрицы}
var a:array[1..m,1..m] of integer; {описуем матрицу 5х5}
i,j:byte; {переменные для прохода матрицы}
g,x,y:integer; {переменные для вывода матрицы и вспомогательная}
begin
{рандомом заполняем матрицу}
clrscr; randomize;
for i:=1 to 5 do
for j:=1 to 5 do
begin
g:=random(20);
a[i,j]:=5-g;
y:=1;
end;
{закончили заполнение. Начинаем вывод матрицы на экран}
for i:=1 to m do
begin
for j:=1 to m do
begin
case j of
1:x:=2;
2:x:=9;
3:x:=16;
4:x:=23;
5:x:=30;
end;
gotoxy(x,y);
write(a[i,j]);
end;
inc(y,2);
end;
writeln(' ');
{закончили вывод}
{Ищем произведение положительных чисел}
g:=1;
for i:=1 to m do
for j:=1 to m do
begin
if a[i,j]>0 then
g:=g*a[i,j]
end;
{заменяем диагонали на произведение}
for i:=1 to m do
begin
for j:=m downto 1 do
begin
a[i,i]:=g; {диагональ с слевого верхнего до правого нижнего угла}
a[i,m+1-i]:=g; {с левого нижнего по правый верхний угол }
end;
end;
{выводим новую матрицу на экран}
y:=10;
for i:=1 to m do
begin
for j:=1 to m do
begin
case j of
1:x:=40;
2:x:=47;
3:x:=54;
4:x:=61;
5:x:=68;
end;
gotoxy(x,y);
write(a[i,j]);
end;
inc(y,2);
end;
writeln(' ');
readln;
end.