Вывести элементы квадратной матрицы в текстовый файл по спирали - 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.