Вывести матрицу спиралью - Free Pascal
Формулировка задачи:
Дан массив NxN (N<=10), заполненный буквами. Вывести массив спиралью.
Пример:
Ввод
a b c
d e f
g h i
Вывод
a b c
h i d
g f e
Решение задачи: «Вывести матрицу спиралью»
textual
Листинг программы
const n=4; type matr=array[1..n,1..n] of char; mas=array[1..n*n] of char; var a:matr; b:mas; i,imax,imin,j,jmax,jmin,k:integer; begin k:=1; writeln('A:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=chr(97+random(26)); b[k]:=a[i,j]; inc(k); write(a[i,j]:3) end; writeln end; writeln; jmin:=1;jmax:=n;imin:=2;imax:=n; k:=0; repeat for j:=jmin to jmax do begin inc(k); a[imin-1,j]:=b[k]; end; for i:=imin to imax do begin inc(k); a[i,jmax]:=b[k]; end; dec(jmax); for j:=jmax downto jmin do begin inc(k); a[imax,j]:=b[k]; end; dec(imax); for i:=imax downto imin do begin inc(k); a[i,jmin]:=b[k]; end; inc(imin); inc(jmin); until k>=n*n; writeln('A'':'); for i:=1 to n do begin writeln; for j:=1 to n do write(a[i,j]:3); end; readln; end.
Объяснение кода листинга программы
- Объявлены две матрицы: квадратная матрица
a
размеромn x n
типаarray[1..n,1..n] of char
и одномерная матрицаb
размеромn x n
типаarray[1..n*n] of char
. - В цикле заполняется матрица
a
случайными символами. - Задаются границы для внутреннего цикла, который будет выводить символы матрицы
a
в консоль. - Внутренний цикл перебирает строки матрицы
a
. - Внешний цикл перебирает столбцы матрицы
a
. - Каждая итерация внутреннего цикла выводит символ из матрицы
a
в консоль. - В конце программы выводится итоговая матрица
a
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д