Помощь - Поиск - Пользователи - Календарь
Полная версия: Заполнение матрици по спирали
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
klem4
Наткнулся на эту задачу в книге олимпиадной, решил сделать сам, код не похож на тот что в нашем FAQ, по этому выкладываю, может кому-нибудь пригодится, алгоритм прост, совершаем обход матрици по "кругу", каждый следующий проход, сокращая его "радиус"

uses crt;
const n = 6;
type
   TMx = array[1..n,1..n] of integer;

procedure Print(mx : TMx);
var
   i,j : byte;
begin
   writeln; writeln;
   for i := 1 to n do begin
      writeln;
      for j := 1 to n do write(mx[i,j]:2,' ');
   end;
end;

procedure SpiralFill(var mx : TMx);
var
   i,j,c : byte;
begin

   i := 1;
   j := 1;
   c := 0;

   repeat

       while (j <= n - c) do begin readln(mx[i,j]); inc(j); end;

       inc(i); dec(j);

       while (i <= n - c) do begin readln(mx[i,j]); inc(i); end;

       dec(j); dec(i);

       while (j >= 1 + c) do begin readln(mx[i,j]); dec(j); end;

       inc( c ); inc(j); dec(i);

       while (i >= 1 + c) do begin readln(mx[i,j]); dec(i); end;

       inc(j); inc(i);

   until c > n div 2;

end;

var
   m : TMx;

begin
   clrscr;
   SpiralFill(m);
   Print(m);
   readln;
end.
APAL
Так может надо было сразу в FAQ?
klem4
Пускай "Суровый профи" оценит я думаю lol.gif
volvo
А чего его оценивать? Он что, сильно отличается от этого ?
klem4
Клон ph34r.gif

Я думаю тогда стоит все в faq добавить ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.