![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
FENIX |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание:
Дан текстовый файл. Построить дерево поиска из символов этого файла. Определить пути в дереве, имеющие только согласные буквы. Все эти вершины отметить цветом. Моя задумка заключается в следующем: в процедуре Print сравнивать входящую информацию с инфой в массиве и, соответственно, менять цвет. Но что-то ничего не сравнивается ![]() Не могу понять, как сделать правильно.
Сообщение отредактировано: FENIX - 26.04.2005 17:24 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
FENIX, смотри, что меня настораживает... Тебе нужно
Цитата Определить пути в дереве, имеющие только согласные буквы , а что ты делаешь?For i := 1 to n do это у тебя сравнивает строку с символом... Формально это допустимо (символ - это частный случай строки), но это будет всегда возвращать False, и как следствие - никакой подсветки разными цветами... Я бы ввел вместо того,что у тебя: Alphabet : array [1..n] of String = ... вот это: const и переписал бы BTree.Print вот так: Procedure BTree.Print(K : word); Попробуй, должно сработать ... ;) |
FENIX |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Блин, какой-то завал... Я и так, и сяк переделывал твою процедуру - не работает... У меня создалось впечатление, что программа никак не реагирует на изменения... ![]() З.Ы. Я из файла правильно информацию читаю? Вроде да, но заметил, что когда дерево выводится на экран, у "а" рядом стоит точка. Откуда? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата(FENIX @ 26.04.05 21:03) Я и так, и сяк переделывал твою процедуру - не работает... У меня создалось впечатление, что программа никак не реагирует на изменения... ![]() А вот с этого места - поподробнее... Я этот кусок вытащил из отработавшей программы. Так вот, чтобы избежать в будущем такой ситуации, что у меня работает, а у тебя - нет, давай сразу пример тестового файла. Это первое ... А второе: ты говоришь, что у тебя задание Цитата Построить дерево поиска из символов этого файла , почему же ты хранишь СТРОКИ, а не символы? Тебе же нужно посимвольно читать файл и КАЖДЫй символ заносить в дерево поиска, ты же заносишь целые слова... Определись, что нужно... |
FENIX |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хммм...
Очень странно, но у меня твоя процедура наотрез отказывалась работать ![]() ... Однако я ее переделал вот так :low: и все заработало: If not Barrier then З.Ы. Пример входного файла Lab_12.txt : Цитата a o g l f k e h v y o i r s З.З.Ы. Еще вопросик: если в файле будут большие буквы, то прога не учтет их. Как исправить, не добавляя константы из больших букв? Я что-то слышал-видел, связанное с UpCase... Сообщение отредактировано: FENIX - 26.04.2005 22:03 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата(FENIX @ 26.04.05 21:38) если в файле будут большие буквы, то прога не учтет их. Как исправить, не добавляя константы из больших букв? Я что-то слышал-видел, связанное с UpCase... Нет... Как раз наоборот, тебе нужно будет внести ТОЛЬКО большие буквы (не добавляя маленьких) и использовать UpCase: For i := 1 to length(Data) do begin Но стандартную функцию Паскаля можно использовать только если буквы у тебя латинские. Если же используется кириллица - поищи по форуму, выкладывалась функция для обработки любых символов (можешь посмотреть в моем модуле в FAQ: Строки, там точно есть...) |
FENIX |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сегодня уточнил задание - необходимо также напечатать (в виде строки из букв после вывода дерева) сами пути. Как?
![]() |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Возможен вариант, что ты запоминаешь значение всех листьев (узлов без потомков), к которым нужно распечатать пути, и потом просто просматривать дерево как бы для поиска каждого из этих значений (и распечатывать все узлы, встреченные по дороге
![]() |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Например вот так (к сожалению, пришлось переделать твое дерево)
![]() uses crt; ![]() |
FENIX |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
function TTree.find_check(T: TType): string; for i := 1 to tree.count do begin Вот же функция для распечатки путей, так? А нижний кусок кода - распечатка... Тогда почему у меня не печатает? ![]() Может ли это как-нибудь быть связано с настройками самого Паскаля? З.Ы. Я немного не понял, для чего печатать "NIL" на месте отсутствующих элементов... ![]() Сообщение отредактировано: FENIX - 30.04.2005 12:19 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата(FENIX @ 30.04.05 12:18) Вот же функция для распечатки путей, так? А нижний кусок кода - распечатка... :yes: Цитата(FENIX @ 30.04.05 12:18) Тогда почему у меня не печатает? А ты визуально проверил, есть ли пути в которых присутствуют ТОЛЬКО согласные буквы? ![]() ![]() Цитата(FENIX @ 30.04.05 12:18) З.Ы. Я немного не понял, для чего печатать "NIL" на месте отсутствующих элементов... Я бы не называл это "отсутствующими" элементами. Просто ветка закончена... А NIL - для удобства (я так всегда делаю).![]() |
FENIX |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Так...
Завел твой файл - тот же результат. Пути весь печататься должны внизу под деревом в строчку, так? У меня - пусто ![]() "Нич-ч-е не понимаю" (С) |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Ну, я не знаю, ЧЕМ и КАК ты компилируешь в конце концов. У меня BP, TMT, FPC, Dev-PAS и Турбо дают одинаковый результат... Хочешь - скину EXE - файл... Больше помочь ничем не могу, и программ больше я писать готовых тоже не буду... Уж ОЧЕНЬ часто то, что отрабатывает у меня НЕ работает у других. Sorry...
Кстати, F7 (пошаговый проход) никто не отменял. Пройди по программе шаг за шагом и посмотри, где она У ТЕБЯ не срабатывает... Вот скриншот: Эскизы прикрепленных изображений ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 12:17 |