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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2012, 00:04   #21
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Ты сделал? Молодец, для будущих поколений можешь привести код, чтобы не было глупых вопросов - и где же ответ?

Правда у тебя как-то сложно все выходит и в три прохода, не оптимально. Но приведи код хотя бы реализующий это.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 08.09.2012, 00:23   #22
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

grenles
Код:
Ты сделал?
какой сделал!!! Если мы даже первый шаг выполнить не можем
Madmaxisss вне форума Ответить с цитированием
Старый 08.09.2012, 13:04   #23
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Будет время, я посижу над твоей задачей. только вируальную машину поставлю, чтобы нормально Борланд паскаль работал. НА семерке он ругается шибко матом, не хорошо.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 08.09.2012, 16:06   #24
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

еще раз повторю суть задания нужно просто пронумеровать узлы дерева как показано на рисунке, листья не трогать.
Изображения
Тип файла: jpg 08-09-2012 18-50-29.jpg (49.3 Кб, 101 просмотров)
Madmaxisss вне форума Ответить с цитированием
Старый 08.09.2012, 18:01   #25
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

На рисунке самая левая двойка вроде лишняя? У неё ведь нет листьев.
Могу предложить за 2 прохода сделать. Первый проход подсчитает максимальную глубину дерева (то самое максимальное kk-1 которое можем найти)
Для второго прохода используем другую процедуру, примерно так
Код:
PRO_URO222 (mytrre,max_kk-1);
PROCEDURE  PRO_URO222 (tt :tree; kk :integer); 
begin
   if (tt^.pll<>nil) then 
      begin 
         PRO_URO222(tt^.pll,kk-1); 
      end;

   if (tt^.prr<>nil) then 
      begin 
         PRO_URO222(tt^.prr,kk-1); 
      end;

if (tt^.pll<>nil) or (tt^.prr<>nil) then tt^.value=kk;
end;
Возможно, есть более быстрый способ, но этот зато простой
eoln вне форума Ответить с цитированием
Старый 08.09.2012, 18:27   #26
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

Цитата:
На рисунке самая левая двойка вроде лишняя?
да eoln ты прав )) я просто не заметил

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

Цитата:
eoln, Для второго прохода используем другую процедуру, примерно так
я аж прослезился, как тебе это удалось? так просто. Ну все осталось процедуру для третьего шага...
Madmaxisss вне форума Ответить с цитированием
Старый 08.09.2012, 19:30   #28
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

все составил))) большое всем спасибо за труды.
особая похвала eoln и grenles спасибо вам.
хотя до конца код еще не объездил)) (могут быть ошибки)

Код:
PROCEDURE  PRO_URO (tt :tree; 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 
      begin
         if k_max>kk then k_max:=kk;
         tt^.element:=kk;
      end;
END;

PROCEDURE  PRO_NOM (tt :tree; kk :integer); 
BEGIN
   if (tt^.pll<>nil) then PRO_NOM(tt^.pll,kk-1); 
   if (tt^.prr<>nil) then PRO_NOM(tt^.prr,kk-1); 
    
   if (tt^.pll<>nil) or (tt^.prr<>nil) then 
      begin
         tt^.element:=kk+k_max;
      end;
END;

begin

...
     kk:=0; k_max:=0;
     
     PRO_URO(k_tree^.prr, kk);  
     
     kk:=0; k_max:=(-k_max)+1;
      
     PRO_NOM (k_tree^.prr, kk); 
...

end;
Madmaxisss вне форума Ответить с цитированием
Старый 11.09.2012, 00:09   #29
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

я позднее предложу свой код. Частично я е го написал в виртуальной машине, но по глупости потерял изменения вирутального диска и потерял код. Восстановил по памяти. а он стал работать уже не так. и не могу отловить логическую ошибку.
и это пройдет...
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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