Вывести матрицу спиралью - 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.

Объяснение кода листинга программы

  1. Объявлены две матрицы: квадратная матрица a размером n x n типа array[1..n,1..n] of char и одномерная матрица b размером n x n типа array[1..n*n] of char.
  2. В цикле заполняется матрица a случайными символами.
  3. Задаются границы для внутреннего цикла, который будет выводить символы матрицы a в консоль.
  4. Внутренний цикл перебирает строки матрицы a.
  5. Внешний цикл перебирает столбцы матрицы a.
  6. Каждая итерация внутреннего цикла выводит символ из матрицы a в консоль.
  7. В конце программы выводится итоговая матрица a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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