Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Подскажите алгоритм


Автор: Fighter 10.2.2006, 01:15
Дан произвольный одномерный массив. Нужно вывести его элементы по спирали.

Автор: karataev 10.2.2006, 01:19
Это как это так - "по спирали"? smile

Автор: Fighter 10.2.2006, 01:24
Дан массив 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Нужно вывести


1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
Добавлено @ 01:26
Вообще это может быть не массив, а, например, числа могут быть заданы в цикле, ну например:

Код

  ...
  for i := 1 to 16 do
  begin
  ...
  end;
  ...

Автор: volvo877 10.2.2006, 01:33
Fighter, так пойдет:
Код
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, count : byte;
begin

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

   repeat

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

       inc(i); dec(j);

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

       dec(j); dec(i);

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

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

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

       inc(j); inc(i);

   until c > n div 2;

end;

var
   m : TMx;

begin
   clrscr;
   SpiralFill(m);
   Print(m);
   readln;
end.

?

Здесь просто числа 1 .. N^2 "закручиваются" в спираль...

Автор: Innuendo 19.2.2006, 17:29
плин, зря я не пошел на дополнительные сегодня smile
друг сказал что они как раз это проходили)

Автор: Mayk 19.2.2006, 18:14
Цитата(Fighter @ 10.2.2006, 05:15 Найти цитируемый пост)
Дан произвольный одномерный массив. Нужно вывести его элементы по спирали.

Пардон муа, а как вывести по спирали вот такой массив:
1,2,3,4,5,6

Весьма произовльный и весьма одномерный
Добавлено @ 18:15
Или даже вот такой(не менее произвольный и не менее одномерный):
1,2

Автор: cardinal 19.2.2006, 18:22
Название темы должно отражать ее суть!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)