Вывести элементы квадратной матрицы в текстовый файл по спирали - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1;1 и перемещаясь по часовой стрелке, вывести все ее элементы в текстовый файл по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.

Решение задачи: «Вывести элементы квадратной матрицы в текстовый файл по спирали»

textual
Листинг программы
const nmax=25;
var a:array[1..nmax,1..nmax]of integer;
    n,i,j,x,y,add,dir:integer;
begin
randomize;
repeat
write('Введите размер матрицы нечетное число от 3 до ',nmax,' n=');
readln(n);
until(n in [3..nmax])and(odd(n));
writeln('Матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(100);
    write(a[i,j]:3);
   end;
  writeln;
 end;
writeln('Вывод по спирали');
x:=0; //из левого верхнего угла
y:=1;
Add:=n; //путь=n
dir:=1;
while (add<>0) do //пока длина пути больше 0
 begin
  i:=0;
  while (i<>add) do //вправо и влево
   begin
    x:=x+dir;
    write(a[y,x]:3);
    i:=i+1;
    end;
  i:=0;
  add:=add-1;
  while (i<>add) do //вниз и вверх
   begin
    y:=y+dir;
    write(a[y,x]:3);
    i:=i+1;
   end;
  dir:=dir*(-1); //прошли полкруга меняем знак
 end;
end.

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы