![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Pessimist |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
Англо-русский словарь построен как бинарный список (двоичное
дерево). Каждая компонента содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данной компонен- те. Первоначально бинарный список был сформирован согласно английс- кому алфавиту. В процессе эксплуатации словаря при каждом обращении к компоненте в счетчик обращений добавлялась единица. Составить программу, которая: -обеспечивает начальный ввод словаря с конкретными значениями счетчиков обращений; -формирует новое представление словаря в виде двоичного дерева по следующему алгоритму: а) в старом словаре ищется компонента с наибольшим значением счетчика обращений; б) найденная компонента заносится в новый словарь и удаляется из старого; в) переход к п. а) до исчерпания исходного словаря. -производит распечатку исходного и нового словарей. Указание: использовать динамические структуры. КОД ПРОГРАММЫ: program dynamic; при попытке компиляции выдает Stack overflow error сам ошибку найти не смог, а прогу позарез к утру сделать нуна. Очччень нуна помощщщьь Тегами пользуйся, без них программа нечитаема абсолютно Сообщение отредактировано: volvo - 22.01.2009 3:27 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
У тебя в программе 2 проблемы:
1) не совсем корректно находится указатель на элемент, содержащий заданное тобой значение (функция findmax)... Я бы ее переписал вот так: function findmax(p:pnode; max:word) : pnode; 2) более серьезная проблема: на определенном этапе у тебя происходит попытка разыменования nil-а, но ты этого не замечаешь. Смотри: Цитата procedure move(p,pnew:pnode); procedure move(p,pnew:pnode); Это все при условии, что удаление/добавление работают правильно, я не проверял их реализацию... Но теперь ты знаешь, в чем проблема и справишься (надеюсь) дальше самостоятельно... |
Pessimist |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
спс пошел мучать её дальше.
Добавлено через 6 мин. Так насчет findmax() не согласен, если учитывать, что дерево создается по data.eng следовательно поиск по data.num может быть ток перебором элементов до первого совпадения Добавлено через 13 мин. Не могли бы вы проверить функцию find(). похоже из-за неё возникает зацикливание. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Возможно, я уже опоздал, но вот что получилось (переписаны все твои функции/процедуры; объяснение, почему удаление элемента желается именно так приведено здесь , там же можешь найти и другую полезную информацию о работе с деревьями):
program dynamic; |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:10 |