![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mpjoke |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 23.12.2006 Репутация: нет Всего: нет |
Помогите, надо заставить программу выводить в файл все слова, упорядоченные по частоте встречаемости. При этом нужно использовать древовидную сортировку
Я написал 1 половину программы - сортирует в алфавитном порядке, а заставить ее построить 2 дерево, на основе 1го не получается... Вот текст программы, буду крайне признателен, если подскажите как это сделать или напишете этот кусок. Заранее спасибо.
|
|||
|
||||
| Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: нет Всего: 12 |
Дерево должно быть одно.
Строй дерево (двоичное, раземеется) по мере прочтения каждого слова. Изначально дерево пусть. Прочел слово --- добавил узел, след. слово --- след. узел и т.д. При добавлении надо будет сравнивать элементы (a, b --- слова): (a < b) <=> strcmp(a, b) < 0 (a = b) <=> strcmp(a, b) = 0 (a > b) <=> strcmp(a, b) > 0. Потом, пока дерево непусто, удаляешь очередное слово и пишешь его в файл. -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
| mpjoke |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 23.12.2006 Репутация: нет Всего: нет |
Я так и делал при сортировке по алфавиту, а теперь надо отсортировать по частоте встречаемости...
А мне как то не взять инфу из отсортированного по алфавиту дерева... |
|||
|
||||
| Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: нет Всего: 12 |
Зачем сортировать по алфавиту?
Так ты сразу построишь двоичное дерево (алгоритм добавления спиши откуда-нибудь). А двоичное дерево обладает интересным свойством: для любого узла x дерева все элементы левого (правого) поддерева не больше (не меньше) x. Таким образом минимальный элемент --- самый левый лист. В соответствии с этим, удаляем минимум и печатаем его; удаляем след. мин и печатаем его; ... удаляем послед элемент и печатаем его. -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Идея достаточно проста:
нужно обойти построенное тобой дерево любым из известных способов - симметричным, preorder, postorder. Т.е. так, чтобы ты заходил в каждый узел ровно один раз Исходное дерево отсортированно в лексиграфическом порядке. Т.е.
Теперь строишь новое дерево по такому же принципу, только теперь сравнение делаешь не по strcmp, а по уже имеющейся инфе о количестве встречаемости Т.е. придется строить НОВОЕ дерево упорядочение на месте старого - это ОЧЕНЬ неприятное и долгое занятие. Его лучше не рассматривать. -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: нет Всего: 12 |
Точно, ошибся.. -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |