Задание очень на ваше похоже:
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A
1,1 и перемещаясь по часовой стрелке, вывести все
ее элементы по спирали: первая строка, последний столбец, последняя
строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т.д.; последним выводится центральный
элемент матрицы.
Код:
uses crt;
const nmax=15;
var a:array[1..nmax,1..nmax]of integer;
m,i,j:byte;
x,y,add,dir:integer;
begin
clrscr;
repeat
write('Размер матрицы нечетное число до ',nmax,' m=');
readln(m);
until odd(m)and(m in [1..nmax]);
writeln('Матрица:');
for i:=1 to m do
begin
for j:=1 to m do
begin
a[i,j]:=(i-1)*m+j;{можно по другому заполнить, это для наглядности}
write(a[i,j]:4);
end;
writeln;
end;
writeln;
x:=0;{выход слева вверху}
y:=1;
Add:=m; {длина начального пути}
dir:=1;{положительное направление}
while (add<>0) do
begin
i:=0;
while (i<>add) do
begin
x:=x+dir; {влево или вправо}
write(a[y,x]:4);
i:=i+1;
end;
i:=0;
add:=add-1;{прошли отрезок, уменьшаем длину}
while (i<>add) do
begin
y:=y+dir;{вниз или вверх}
write(a[y,x]:4);
i:=i+1;
end;
dir:=dir*(-1);{прошли 2 отрезка меняем направления}
end;
readln
end.