Наткнулся на эту задачу в книге олимпиадной, решил сделать сам, код не похож на тот что в нашем 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 := 1to n dobegin
writeln;
for j := 1to 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;
repeatwhile (j <= n - c) dobegin readln(mx[i,j]); inc(j); end;
inc(i); dec(j);
while (i <= n - c) dobegin readln(mx[i,j]); inc(i); end;
dec(j); dec(i);
while (j >= 1 + c) dobegin readln(mx[i,j]); dec(j); end;
inc( c ); inc(j); dec(i);
while (i >= 1 + c) dobegin readln(mx[i,j]); dec(i); end;
inc(j); inc(i);
until c > n div2;
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 добавить ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.