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

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

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

Код к задаче: «Вывести матрицу по спирали в текстовый файл. - Pascal ABC»

textual
var
  k,ki,kj: integer;
...
  assign(output, 'output.txt');
  rewrite(output);
  i:=1; j:=1;
  ki:=0; kj:=1;
  for k:=1 to m*m do begin
    write(a[i,j], ' ');
    inc(i,ki); inc(j, kj);
    if (kj>0) and (j>m-i+1) then begin
      dec(j); inc(i); kj:=0; ki:=1;
    end;
    if (kj<0) and (j<m-i+1) then begin
      inc(j); dec(i); kj:=0; ki:=-1;
    end;
    if (ki>0) and (i>j) then begin
      dec(i); dec(j); kj:=-1; ki:=0;
    end;
    if (ki<0) and (i<=j) then begin
      inc(i); inc(j); kj:=1; ki:=0;
    end;
  end;
  close(output);

6   голосов, оценка 3.667 из 5


СОХРАНИТЬ ССЫЛКУ