Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 19:38   #1
Fellics{новичок}
Форумчанин
 
Аватар для Fellics{новичок}
 
Регистрация: 25.03.2008
Сообщений: 159
По умолчанию Заполнение массива спиралью

Всем доброго времени суток. Задача: Требуется заполнить массив размера N × N единичками по спирали (начиная с верхнего левого угла по часовой стрелке, см. пример).
Пример: N=7
1111111
0000001
1111101
1000101
1011101
1000001
1111111

Код я написал, только он работает достаточно не правильно, поэтому и прошу помощи, Вы последняя надежда в нахождении ошибок в моем коде.
Собственно код:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var n,x,y,i,j,z,p:Integer;
a:array [1..1000,1..1000]of Integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  Read(n);
  p:=n;
  x:=1;
  y:=1;


  for i:=y to n do
  a[y,i]:=1;
  for i:=x to n do
  a[i,n]:=1;
  for i:=x to n do
  a[n,i]:=1;
  x:=x+2;
  for i:=x to n do
  a[i,y]:=1;
    y:=y+1;
  n:=n-2;
  Writeln(x);
  if n>4 then
//******************************//
  while n>0 do
  begin
    for i:=y to n do
  a[x,i]:=1;
  for i:=x to n do
  a[i,n]:=1;
  for i:=x to n do
  a[n,i]:=1;
  x:=x+2;
  for i:=x to n do
  a[i,y+1]:=1;
  a[i,y]:=1;
    y:=y+2;
  n:=n-2;
  end;






  for i:=1 to p do
  begin
  for j:=1 to p do
  Write(a[i,j],' ');
  writeln;

  end;

  read(n);

end.
Fellics{новичок} вне форума Ответить с цитированием
Старый 01.12.2010, 20:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я бы пробовал что-то в таком роде:
Код:
var a:array[1..10,1..10] of byte;
 x,y,n:integer;

 begin
 y:=1; x:=1;n:=10;
 repeat
  while x<=n do begin a[x,y]:=1;inc(x);end;dec(n);dec(x);
  while y<=n do begin a[x,y]:=1;inc(y);end;dec(n);dec(y);
  while x>=(10-n) do begin a[x,y]:=1;dec(x);end;dec(n);inc(x);
  while y>=(10-n) do begin a[x,y]:=1;dec(y);end;dec(n);inc(y);
 until n<=0;
  { TODO -oUser -cConsole Main : Insert code here }
  for y:=1 to 10 do begin
   for x:=1 to 10 do begin
    write(a[x,y]:5);
   end;   writeln;
  end;   writeln;
  readln;
end.
I'm learning to live...

Последний раз редактировалось Stilet; 01.12.2010 в 20:56.
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного числового массива «спиралью» vicvtor Помощь студентам 2 06.07.2011 09:10
заполнение массива GaLiof JavaScript, Ajax 4 01.11.2010 20:36
Заполнение массива из файла на Си bagbier Помощь студентам 1 21.09.2010 14:09
Заполнение массива siemdi Общие вопросы C/C++ 12 27.05.2010 22:21
Заполнение массива. Небесный Общие вопросы C/C++ 3 01.09.2009 01:39