Наткнулся на эту задачу в книге олимпиадной, решил сделать сам, код не похож на тот что в нашем 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
7.01.2006 19:52
Так может надо было сразу в FAQ?
klem4
7.01.2006 19:56
Пускай "Суровый профи" оценит я думаю
volvo
7.01.2006 20:11
А чего его оценивать? Он что, сильно отличается от этого ?
klem4
8.01.2006 17:28
Клон
Я думаю тогда стоит все в faq добавить ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.