Вывести матрицу спиралью - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д