IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Выписать слова в алфавитном порядке
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Женский

Репутация: -  1  +


Добрый день! Помогите пожалуйста со следующей задачей:
Дан текстовый файл, состоящий из слов, разделенных пробелами и запятыми. Слова по строкам не переносятся.
Необходимо упорядочить слова в алфавитном порядке с указанием строк, в которых они встречаются. Реализовать
всё надо с помощью деревьев.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Получается что в итоге мы создаем дерево из записей, в которых поле S это строка (в данном случае слово), и поле tree - это уже другое бинарное дерево, но уже из целых чисел, в которых хранятся номера строк для этого слова?
Да, именно так. А что, это как-то противоречит заданию? По-моему, как раз наоборот, это именно то, чего просили в задании. Или это НЕ то, что хочет видеть преподаватель? Тогда извини, мне плевать, что он хочет видеть, я написал, как эту задачу решал бы я. За один проход вывести все дерево и для каждого его узла - все номера строк, в которых присутствует текущее слово (а потом ровно так же, за один проход, удалить всю выделенную под дерево память) - это, наверное, слишком просто? Нужна программа на пару тысяч строк? Это не ко мне.

Цитата
процедуру инициализации дерева
ты еще не сделала. Когда заносишь слово в дерево TTree, нужно отдельно обрабатывать тот случай, который закомментирован: если слово уже присутствует в дереве. Это важно. Это первое замечание.

Второе: зачем понадобилось выносить CreateNode из процедуры Insert и делать ее мало того, что внешней, так еще и открытой извне? CreateNode - чисто служебная процедура. никакого отношения к ней никто кроме Insert-а не имеет, она должна быть локальной внутри Insert. Чем меньше функций у тебя видимы извне - тем спокойнее. Каждый должен заниматься своей работой: Insert получил на вход строку? Получил. Все, на выходе - строка будет добавлена к дереву, либо к целочисленному дереву, соответствующему этой строке, будет добавлено еще одно значение: текущая позиция в файле. Больше CreateNode нигде не используется.

Третье: не имей такой привычки убирать сигнатуру у функции в секции Implementation, и оставлять только имя. Потом, при попытке перейти на более современный компилятор, эта привычка тебе аукнется.

И четвертое: зачем тебе здесь вообще модуль? Это все прекрасно делается одним файлом, без разбиения на модули. Поверь, 130 строк - не тот размер программы, чтобы ее начинать дробить на куски. Дробление начинается, когда количество строк зашкаливает за тысячу.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Даша   Выписать слова в алфавитном порядке   10.12.2010 22:56
volvo   И Вам день добрый. Обязательно поможем, как только…   10.12.2010 23:26
Даша   Затруднение как раз с деревьями. Как в данной зада…   11.12.2010 0:06
TarasBer   Ну в данном случае может помочь дерево, у которого…   11.12.2010 0:39
volvo   Не нужно здесь префиксное дерево, не надо забивать…   11.12.2010 1:03
TarasBer   > Не нужно здесь префиксное дерево, не надо заб…   11.12.2010 1:36
volvo   Даша, в качестве иллюстрации работоспособности: Ru…   11.12.2010 15:41
TarasBer   Префиксное дерево строк + данные о номере строки в…   11.12.2010 18:20
Даша   Ого.. Не думала что эта задача вызовет жаркий спор…   12.12.2010 4:05
volvo   По ссылке, которую я привел, ходила? Там приведено…   12.12.2010 5:12
TarasBer   > T = record s: string[StrLen]; tree: T…   12.12.2010 5:30
volvo   Потому что слово может встречаться не в одной стро…   12.12.2010 6:26
Даша   Пока что написала только это: interface const St…   12.12.2010 18:33
volvo   Да, именно так. А что, это как-то противоречит зад…   12.12.2010 19:40
Даша   Нет нет. Я просто спросила чтобы убедиться правил…   12.12.2010 19:57
volvo   Даша, смотри... Я могу, конечно отвечать на твои в…   13.12.2010 17:02
Даша   Согласна :) . Невнимательность подвела, совершенн…   13.12.2010 21:22
Даша   Непонятна функция GetWords.. Ведь она же принимает…   13.12.2010 21:43
volvo   Я не использовал саму функцию. Я использовал тольк…   13.12.2010 22:01
Даша   Совсем не получается это реализовать.. Непонятно,…   13.12.2010 23:57
volvo   Хм... Вот так, наверное: var s: string; // ... C…   14.12.2010 0:04
Даша   Да! Спасибо!   14.12.2010 0:10
Даша   Вот то что получилось написать.... Implementation …   14.12.2010 1:12
volvo   Неправда. Печатается. Не всё, но слова, выдранные …   14.12.2010 1:32
Даша   При запуске программы появляется пустая консоль и…   14.12.2010 1:36
volvo   Да? Ну, смотри, что у меня появляется:   14.12.2010 1:40
Даша   Ну а у меня чистое окно! Использую Borland Del…   14.12.2010 1:44
volvo   Значит, неправильно что-то описываешь. Поэтому все…   14.12.2010 1:52
Даша   Выкладываю: ОСНОВНОЙ ПРОЕКТ: program Project2; …   14.12.2010 1:55
volvo   Ай-яй-яй :) Но если дублирование переменной X - …   14.12.2010 2:11
Даша   Да, понимаю. Каждый раз просто печатаю "ничег…   14.12.2010 2:12
volvo   А зачем? :) Смотри: ты нашла очередное слово (s).…   14.12.2010 3:09
Даша   Ну думаю с этим я смогу справиться :) Огромное вам…   14.12.2010 3:14
Гость   Помогите плиз с решение: В данной строке найти сам…   23.01.2012 17:35


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.09.2025 15:15
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name