![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
AlexSun |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Задача:
Цитата type TED = <любой тип>; дерево =^ верхушка; верхушка = record элемент: TED; левая, правая: дерево; end; Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T. Все что пока есть: uses crt; Не понимаю как делать. Нужно создать дерево (как?), заполнить его чем-то (чем? рандом или от пользователя... и как?), далее получить от пользователя элемент и посчитать сколько его есть в дереве. Нашел в книге такой исходник: function count(T: дерево; E: ТЭД): integer; Это то что мне нужно, не? Стек - список? Сообщение отредактировано: AlexSun - 26.11.2011 18:33 |
![]() ![]() |
AlexSun |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Как-то здесь тихо на форуме...
|
IUnknown |
![]()
Сообщение
#3
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
На самом деле задача более чем странная. Обычно дерево строится так, что содержит только разные значения ключей (если нужна возможность хранить одинаковые ключи - в структуру, описывающую узел дерева, добавляется счетчик. При добавлении очередного элемента дерево просматривается, если значение уже хранится в дереве - то счетчик этого узла увеличивается и всё). При этом задача
Цитата Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T. теряет смысл. Если счетчика нет - то достаточно просмотреть дерево, и проверить, есть там искомый элемент, или нет. |
AlexSun |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
На самом деле задача более чем странная. Ну я бы сказал тупая ![]() Обычно дерево строится так, что содержит только разные значения ключей (если нужна возможность хранить одинаковые ключи - в структуру, описывающую узел дерева, добавляется счетчик. При добавлении очередного элемента дерево просматривается, если значение уже хранится в дереве - то счетчик этого узла увеличивается и всё). Ключи могут быть одинаковыми и они могут повторяться ![]() Мой новый, рабочий код: uses crt; Добавлено через 4 мин. Все хорошо, но приказали переделать ввод элементов и рисование полученного дерева. Как-то так: procedure dobavl(var a:derevo;y:integer); Это я нашел в чужой работе. Что на это скажешь? Добавлено через 3 мин. Нашел здесь твою функцию рисования дерева в графическом режиме. Ты не мог бы ее прикрутить к моей программе? Или объясни где и как правильно инициализировать графику, чтоб она работала. Или может у тебя есть своя программа, где она используется, выложи пожалуйста код. Сообщение отредактировано: AlexSun - 1.12.2011 16:33 |
IUnknown |
![]()
Сообщение
#5
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это я нашел в чужой работе. Что на это скажешь? Бред. Но если условие стоит так, что в дереве могут быть одинаковые ключи и они могут повторяться (хотя тогда совершенно непонятно, на кой черт кому-нибудь понадобится такое дерево? Поиск в нем будет неэффективным, ибо узлы разбросаны бессистемно, зачем его использовать?), то можно и так... Или объясни где и как правильно инициализировать графику, чтоб она работала. Или может у тебя есть своя программа, где она используется, выложи пожалуйста код. Вот тут выкладывался рабочий код с этой процедурой: Фамильное представление ДЕРЕВА |
AlexSun |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
А нету аналогичной процедуры, без использования графики?
Или как ее написать, чтоб корень дерева был в центре строки, а ветки и листья ниже его? Аналогично моей процедуре show(), только чтоб выводилось не слева на право, а сверху вниз. Никак не придумаю. |
IUnknown |
![]()
Сообщение
#7
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Или как ее написать, чтоб корень дерева был в центре строки, а ветки и листья ниже его? Написать-то можно, только вот разберешься ли ты потом, какой узел - чей потомок, или нет?Вот так, скажем: procedure show(var t : tree); , и что? Попробуй напечатать дерево из 10 элементов, и разобраться, кто чей левый потомок, а кто - правый... |
AlexSun |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 18:00 |