Показать сообщение отдельно

  #105  
Старый 09.07.2009, 14:13
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
С нами: 9679872

Репутация: 347
По умолчанию

мой вариант про спираль на поцкале:
Код:
program spiral;

const n = 5;
type matrix = array of array of cardinal;

//----------------------------------------------------------------------
procedure fill_spiral(var m : matrix; n : cardinal);
var i, num_circle, start: integer;
begin
 start := 1;
 for num_circle := 0 to n div 2 -1 do begin
  for i := num_circle to n - num_circle - 1 do begin
   m[num_circle, i] := start + i;
   m[n - num_circle - 1, n - i - 1] := 2 * n - num_circle * 4 - 2 + start + i;
  end; 
  for i := num_circle + 1 to n - num_circle - 2 do begin
   m[i, n - num_circle - 1] := start + n - num_circle * 2 + i - 1;
   m[n - i - 1, num_circle] := start + 3 * n - num_circle * 6 - 3 + i;
  end;
  start := start + 4 * n - num_circle * 7 - 5;
 end;
 if n mod 2 <> 0 then m[n div 2, n div 2] := start + 1;
end;

//----------------------------------------------------------------------
var i, j: integer;
    s: matrix;
BEGIN
 SetLength(s, n, n);
 fill_spiral(s, n);
 for i := 0 to n - 1 do begin
  for j := 0 to n - 1 do 
   write(s[i, j] : 4, ' ');
  writeln;
 end; 
END.

Последний раз редактировалось bons; 09.07.2009 в 14:37..
 
Ответить с цитированием