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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 12:35   #1
artacer
 
Регистрация: 09.06.2011
Сообщений: 4
Печаль Заполнение квадрата 6х6 по спирали

Заполните квадрат 6 на 6 по спирали в направлении часовой стрелки от наружной части квадрата к внутренней цифрами от 9 до 0 (циклически) с последовательно меняющимися цветами.

Напомню, массивами пользоваться запрещено. Даже одномерными.
Чисто циклы и модуль CRT. Таково задание... И простите, если уже было, я искал, честно, везде только с массивами... Если уже есть, киньте ссылку пожалуйста
artacer вне форума Ответить с цитированием
Старый 09.06.2011, 12:49   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ты не поверишь - без понятия "массив" эта задача попросту нерешаема)
Ибо даже прямой доступ к экранному видеобуферу есть ничто иное как обращение к массиву.
mss вне форума Ответить с цитированием
Старый 09.06.2011, 13:09   #3
artacer
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию

Уважаемый, я вас конечно понял, но и вам бы следовало понять меня, про какие именно массивы я говорил.
artacer вне форума Ответить с цитированием
Старый 09.06.2011, 13:52   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

берите любой из найденных Вами алгоритмов.
заменяйте A[i,j] := K
на
GotoXY(J, I);
TextColor(K);
Write(K);

и всё. задача решена!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2011, 13:59   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
следовало понять меня, про какие именно массивы я говорил
А мы тут в догадайки играем, да ?)
mss вне форума Ответить с цитированием
Старый 09.06.2011, 14:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот решение с массивом (классика, так сказать..)
Код:
{Заполнить матрицу по спирали последовательными числами
от левого верхнего угла и по часовой стрелке}

Const SizeMatrix = 10;

var a:array[1..SizeMatrix,1..SizeMatrix] of byte;
 x,y,n, K :integer;

 begin
 y:=1; x:=1; n:= SizeMatrix;
 K := 1;
 repeat
  dec(x);
  while x<n do
     begin inc(x); a[x,y]:=K; inc(K) end;

  while y<n do begin inc(y); a[x,y]:=K; inc(K); end;

  while x>(SizeMatrix-n+1) do begin dec(x); a[x,y]:=K;; inc(K) end;


  while y>(SizeMatrix-n+2) do begin dec(y); a[x,y]:=K; inc(K) end;
  dec(n);
  inc(x);

 until n<=0;

 {вывод полученной матрицы на экран}
 for y:=1 to SizeMatrix do begin
   for x:=1 to SizeMatrix do
    write(a[x,y]:6);
   writeln;
  end;
  writeln;
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2011, 14:35   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а решение задачи, это что-то вроде такого:
Код:
{Заполните квадрат 6 на 6 по спирали в направлении часовой стрелки от
наружной части квадрата к внутренней цифрами от 9 до 0 (циклически) с
последовательно меняющимися цветами}

uses CRT;
Const SizeMatrix = 6;


procedure NextColorAndNumber(var K : integer);
begin
  Dec(K);
  if K<0 then K := 9;
  TextColor(K+6);
end;

procedure ShowNext(X,Y,K : integer);
begin
  GotoXY(X, Y);
  Write(K);
end;


var
 x,y, n, K :integer;

begin
 ClrScr;

 y:=1; x:=1; n:= SizeMatrix;
 K := 9;
 TextColor(K+6);
 repeat
  dec(x);
  while x<n do
     begin inc(x); ShowNext(x,y,k);; NextColorAndNumber(K) end;

  while y<n do begin inc(y); ShowNext(x,y,k);; NextColorAndNumber(K); end;

  while x>(SizeMatrix-n+1) do
    begin dec(x); ShowNext(x,y,k);;; NextColorAndNumber(K) end;


  while y>(SizeMatrix-n+2) do
    begin dec(y); ShowNext(x,y,k);; NextColorAndNumber(K) end;
  dec(n);
  inc(x);

 until n<=0;
 readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.06.2011, 01:11   #8
artacer
 
Регистрация: 09.06.2011
Сообщений: 4
Плохо

Цитата:
Сообщение от mss Посмотреть сообщение
А мы тут в догадайки играем, да ?)
По-моему, ты придираешься!
artacer вне форума Ответить с цитированием
Старый 10.06.2011, 01:14   #9
artacer
 
Регистрация: 09.06.2011
Сообщений: 4
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а решение задачи, это что-то вроде такого:
Код:
{Заполните квадрат 6 на 6 по спирали в направлении часовой стрелки от
наружной части квадрата к внутренней цифрами от 9 до 0 (циклически) с
последовательно меняющимися цветами}

uses CRT;
Const SizeMatrix = 6;


procedure NextColorAndNumber(var K : integer);
begin
  Dec(K);
  if K<0 then K := 9;
  TextColor(K+6);
end;

procedure ShowNext(X,Y,K : integer);
begin
  GotoXY(X, Y);
  Write(K);
end;


var
 x,y, n, K :integer;

begin
 ClrScr;

 y:=1; x:=1; n:= SizeMatrix;
 K := 9;
 TextColor(K+6);
 repeat
  dec(x);
  while x<n do
     begin inc(x); ShowNext(x,y,k);; NextColorAndNumber(K) end;

  while y<n do begin inc(y); ShowNext(x,y,k);; NextColorAndNumber(K); end;

  while x>(SizeMatrix-n+1) do
    begin dec(x); ShowNext(x,y,k);;; NextColorAndNumber(K) end;


  while y>(SizeMatrix-n+2) do
    begin dec(y); ShowNext(x,y,k);; NextColorAndNumber(K) end;
  dec(n);
  inc(x);

 until n<=0;
 readln
end.
А Вам нереальное спасибо!! От души!! Помогли нереально.
artacer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение квадратной матрицы по спирали [Delphi] willams Помощь студентам 2 13.12.2010 09:05
Качение квадрата Leshiy1 Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2010 20:20
Выбор алгоритма для вычисления определителя матрицы 6х6 Беллая Помощь студентам 2 28.08.2010 23:59
Дана квадратная матрица 6х6. ЮРИЙ ЮРЫЧ Помощь студентам 0 23.12.2009 19:44
Заполнение матрицы по спирали (от центра влево-вниз-вправо-вверх) Баур Помощь студентам 4 03.12.2009 17:39