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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2008, 22:33   #1
Слон
 
Регистрация: 06.06.2008
Сообщений: 3
По умолчанию помогите с диагональной змейкой

Помогите пожалуйста решить след. задачу:
дана прямоугольная матрица,упорядочить ее элементы по схеме:
а в г и
б д з
е ж .....
Слон вне форума Ответить с цитированием
Старый 06.06.2008, 23:04   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Слон, не нужно создавать одинаковые темы.

из Вашего предыдущего сообщения:
Цитата:
т.е. нужно написать процедуру определения для каждого элемента его координат
Попробуйте вот это
Код:
// e - номер элемента в цепочке
// n - размерность матрицы
// r, c - координаты элемента в матрице (строка/колонка)
procedure getCoord(e, n:integer; var r, c:integer);
var m, k, l:integer;
begin
   // Элементы расположены по диагонали
   // размеры диагоналей   1, 2, 3, ... n-1, n, n-1, ... 3, 2, 1
   // определяем номер диагонали и номер элемента внутри диагонали
   k := 1; // размер диагонали
   m := 1; // номер диагонали
   l := 1; // приращение
   while e > k do begin
      dec(e, k);
      inc(m);
      if k = n then l := -1;
      inc(k, l);
   end;
   if l > 0 then begin
      if m mod 2 = 1 then e := k-e+1;  // порядок элементов внутри диагонали
      r := k-e+1;
      c := e;
   end else begin
      if m mod 2 = 0 then e := k-e+1;
      r := n-(k-e+1)+1;   // Зеркальное отражение относительно диагонали
      c := n-(e)+1;
   end;
end;

   for i:=1 to n*n do begin
      getCoord(i, n, r, c);
      a[r,c] := i;
   end;

Последний раз редактировалось alexBlack; 06.06.2008 в 23:27.
alexBlack вне форума Ответить с цитированием
Старый 07.06.2008, 11:19   #3
Слон
 
Регистрация: 06.06.2008
Сообщений: 3
По умолчанию

понял
просто дело в том что не могу разобраться именно с ДИАГОНАЛЬНОЙ матрицей....
Слон вне форума Ответить с цитированием
Ответ


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

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

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