Как создать матрицу и повернуть её часть(по заданным координатам) по часовой стрелке на 90 градусов?
Примерно такой код
Код
const nn=50; mm=50;
var i, j, l, k, n, m, z, x, p, a, b, d : integer;
s, o,h,con,g:array[1..nn, 1..nn] of integer;
v, min :integer;
begin
writeln('Введите размер матрицы'); readln(a,b);
writeln('Введите размер подматрицы'); readln(n);
randomize;
for i:=1 to a do
for j:=1 to b do
s[i,j]:=trunc(random*50);
writeln(' Сформированная матрица');
for i:=1 to a do
begin
for j:=1 to b do
write(s[i, j]:6);
writeln;
end;
for i:=1 to n do
for j:=1 to n do
if i=j then v:=v+o[i, j];
min:=v; z:=n; x:=1;
for l:=1 to a-n+1 do
for k:=1 to b-n+1 do
begin
for i:=1 to n do
for j:=1 to n do
o[i, j]:=s[l+i-1, k+j-1];
v:=0;
for i:=1 to n do
for j:=1 to n do
if i=j then v:=v+o[i, j];
if v<min then
begin
min:=v; x:=l+n-1; x:=k;
end;
end;
read(z,x);
z:=z+n-1;
writeln(' Искомая подматрица');
for i:=1 to a do
for j:=1 to b do
g[i,j]:=s[n-j+1,i];{поворот}
for i:=x to x+n-1 do
  begin
    for j:=z-n+1 to z do
      begin
        write(g[i,j]:3);
      end;
      writeln;
end;
end.

Пишет, что индекс выходит за границы массива. Почему так?