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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2012, 21:52   #11
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
                                 1
                       2                  2
                  3        3          3      3
                4   4               4  4
Я так понял что >>4>>4>>3>>4>>4>>3 это расстояние от вершины до тупика (выделен крассным)
То есть исходил из идеи: входя в новую итерацию увеличиваем локальный счётчик (либо один раз применяем inc, либо сам параметр процедуры увеличиваем), который передался из прошлой итерации.

Madmaxisss, запили в программу предложенные варианты и проверь, либо исходники в атаче приложи чтоб дебагером можно было пройтись

Последний раз редактировалось eoln; 07.09.2012 в 21:54.
eoln вне форума Ответить с цитированием
Старый 07.09.2012, 22:03   #12
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

да eoln это расстояние (оно будет постепенно заносится в дерево при каждом inc-е к каждому узлу), но мне потом это расстояние нужно переконвертить как на рисунке сверху вниз. а листья не трогать.

Я вот думаю мож сразу можно как нибудь составить так чтоб не пришлось переставлять

Последний раз редактировалось Madmaxisss; 07.09.2012 в 22:07.
Madmaxisss вне форума Ответить с цитированием
Старый 07.09.2012, 22:14   #13
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

Цитата:
запили в программу предложенные варианты
твой вариант eoln
как всегда работает)) но как быть в моем задание что на рисунке?
Madmaxisss вне форума Ответить с цитированием
Старый 07.09.2012, 22:24   #14
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

То есть при достижении листа, надо откатываться назад и заносить значение к в значение узла. Тогда как-то так.

Код:
PROCEDURE  PRO_URO (tt :tree; var kk :integer); 
begin
   if (tt^.pll<>nil) then  PRO_URO(tt^.pll,kk+1); 

   if (tt^.prr<>nil) then PRO_URO(tt^.prr,kk+1); 

   if (tt^.pll<> nil)or(tt^.prr<>nil) then tt^.element := kk; // То есть не лист, а кто-то есть в потомках - заносим номер. Осталось подумать, будет ли 1-2-3 или 2-3-4

end;
А вот чтобы в вершине был максимум - обозначающий число уровней - это надо еще подумать. потому что максимум будет внизу, у листа. На 1-2-3, как хотите вы, а 3-2-1. Тогда счетчик надо иначе передавать:


Код:
PROCEDURE  PRO_URO (tt :tree; var kk :integer); 
begin
   if (tt^.pll<>nil) then  PRO_URO(tt^.pll,kk; 

   if (tt^.prr<>nil) then PRO_URO(tt^.prr,kk); 

   if (tt^.pll<> nil)or(tt^.prr<>nil) then 
 begin
   tt^.element := kk; 
   kk := kk +1;
end;

end;
и это пройдет...

Последний раз редактировалось grenles; 07.09.2012 в 22:34.
grenles вне форума Ответить с цитированием
Старый 07.09.2012, 23:02   #15
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

grenles с узлами не правильно но зато с листьями правильно))
Изображения
Тип файла: jpg Безымянный.jpg (46.5 Кб, 50 просмотров)
Madmaxisss вне форума Ответить с цитированием
Старый 07.09.2012, 23:07   #16
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Цитата:
grenles с узлами не правильно но зато с листьями правильно))
Я понял. Додумай.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 07.09.2012, 23:09   #17
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Код:
PROCEDURE  PRO_URO (tt :tree; var kk :integer); 
begin
   if (tt^.pll<>nil) then  PRO_URO(tt^.pll,kk); 

   if kk > 1 then    kk := kk - 1; 

   if (tt^.prr<>nil) then PRO_URO(tt^.prr,kk); 

   if (tt^.pll<> nil)or(tt^.prr<>nil) then 
 begin
   tt^.element := kk; 
   kk := kk +1;
end;

end;
А так? При откате - уменьшаем уровень.
и это пройдет...

Последний раз редактировалось grenles; 07.09.2012 в 23:11.
grenles вне форума Ответить с цитированием
Старый 07.09.2012, 23:21   #18
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

grenles в каждом узле получается минус и число (не правильно eoln правильно говорил про алгоритм), но со своими минусами ты мне идею подал)))

Последний раз редактировалось Madmaxisss; 07.09.2012 в 23:26.
Madmaxisss вне форума Ответить с цитированием
Старый 07.09.2012, 23:34   #19
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Главное думать. У меня нет возможности проверить на компиляторе. А так, надо логически идею додумывать. Когда откатился в другую ветку - какое будет значение Кк и что с ним надо делать.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 07.09.2012, 23:58   #20
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

Цитата:
Цитата:
Как так? Не уловил логики
от узла tt до листка N увеличиваем kk, как дошли до листка вывели kk, после чего kk:=1, и опять повторяем итерацию.
от узла tt до листка увеличиваем kk и заносим в дерево, как дошли до листка(лист не учитывается), то tt приравниваем к узлу(корню), а kk:=1, и опять повторяем итерацию. (eolnправильно понял суть)


grenles а вот идея твоих минусов
Изображения
Тип файла: jpg Безымянный.jpg (93.0 Кб, 46 просмотров)
Madmaxisss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принцип загрузки игровых уровней murzilka6002 Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 27.04.2012 14:56
Расчет уровней в бинарном дереве holi10 Общие вопросы C/C++ 0 01.06.2011 18:22
Задать свойства уровней Polotenchik Microsoft Office Word 2 25.05.2010 14:44