подсчет слов в Trie дереве |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
подсчет слов в Trie дереве |
redeezko |
8.05.2011 10:49
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Добрый день. Помогите пожалуйста с задачей: в Trie дереве подсчитать количество слов, в которых имеется буква "а" (все буквы маленькие, латинские).
Собственно, проблема в написании одной процедуры - поиска слова с заданной буквой. Описание, создание, печать и другие нужные мне процедуры написал. Прилагаю код: unit Unit1; Сообщение отредактировано: redeezko - 8.05.2011 10:50 |
Гость |
8.05.2011 11:10
Сообщение
#2
|
Гость |
Примерно так:
Только названия типам и полям дай нормальные, например, такие:
|
redeezko |
8.05.2011 11:48
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Спасибо большое за ответ =). Но непонятно LastLetter - это что за параметр? Что им будет в программе, при вызове
данной процедуры? |
-TarasBer- |
8.05.2011 12:10
Сообщение
#4
|
Гость |
LastLetter - это как бы индекс данного узла по отношению к родителькому массиву. При первом вызове надо в качестве него написать что-то, не являющееся C. Да, фигня какая-то.
Лучше сделать его boolean. То есть лучше так:
А при первом вызове делать его False. |
redeezko |
8.05.2011 12:40
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Что то не получается...
Вставил в свой код данную процедуру вот таким образом: procedure TTrieTree.sum; При пошаговом выполнении данной процедуры в программе, компилятор доходит до строки f (t<>nil) and (t^.eow) then и завершает работу данной процедуры. Если заменить and на or, то она выполняется один раз (находится только первая буква "а"), но затем сразу следует крах всей программы.. Сообщение отредактировано: redeezko - 8.05.2011 12:42 |
IUnknown |
8.05.2011 12:51
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата в Trie дереве подсчитать количество слов, в которых имеется буква "а" По аналогии с методом Print:function TTrieTree.CountAWords : Integer;Можн, конечно, еще пошаманить, чтоб всю строку не собирать... |
redeezko |
8.05.2011 13:13
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Большое спасибо! Так все получилось, хотя способ и правда не самый лучший.
|
IUnknown |
8.05.2011 13:39
Сообщение
#8
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Вот чуть лучше:
function TTrieTree.CountAWords : Integer;, от явного собирания строк избавились, от проверок Pos-ом тоже. |
-Михаил- |
14.05.2011 10:32
Сообщение
#9
|
Гость |
Выложите архив самой программки пожалуйста.
|
Текстовая версия | 29.04.2024 18:55 |