![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Катюшка512 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
Исользуя классы создать бинарное дерево. В качестве ключа использовать целое число. Записи бинарного дерева содержат указатель на строку,которая является именем файла, в файлах содержится текст. Реализовать функцию, которая для поддерева максимальной длинны выводит на экран содержимое файлов, имена которых оканчиваются на ".asm". В строке выводить не более 60 символов, переход на новую строку выполнять на месте пробела. Перед выводом в первой строке с 30-1 по 40-ю вывести имя файла, а в позиции с 40-й по 52-ю вывести текущую дату (дд.мм.гг). Реккурсии не использовать Другие элементы записи бинарного дерева можно самим объявлять и создавать. Записей в бинарном дереве должно быть не менее 10..
Мальчики,помогите,пожалуйста, совсем не понимаю как к этому подступиться :(.. С меня шоколадка;) |
|||
|
||||
| Катюшка512 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
я начала вот так а как дальше?
|
|||
|
||||
| Катюшка512 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
компилируется но на строчке
выбивает ошибку Acess violation to adress ... ???? |
||||
|
|||||
| t_gran |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Вот, поправил ваш код. Вы совсем забыли про выделение памяти, а ещё не правильно передаёте указатель через параметр.
Для добавления в дерево предлагаю свою функцию, менее наглядную, но более универсальную. В результате ф-ия First становится ненужной:
Это сообщение отредактировал(а) t_gran - 21.12.2009, 05:23 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||
|
|||||
| Laser |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 22.12.2009 Репутация: нет Всего: нет |
Уважаемый, t_gran!!! Я вижу, что Вы мастер своего дела, а я вот... новичок... Помогите пожалуйста с заданием:
"Определит, входит ли элемент Е в дерево Т" больше ничего не сказано. Как я понял, нужно задать дерево допустим целых чисел, заполненное любым способом (возможно рандомом), с клавиатуры вводится элемент, скажем "2" и прога ищет его. Есть такой - отлично, появляется сообщение, что такой элемент присутствует, нету - ну и нету, выдаётся соответствующий текст... |
|||
|
||||
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, спасибо за ответ....позаимствовала предложенную Вами функцию...в итоге получилось :
Не могу разобраться со следующими проблемами: - при создании корня (первого элемента дерева) записывает мусор...отсутствует инициализация?? - при выводе текстового файла в начале первой строки выползают лишние пробелы... - дату выводит непонятно каким образом, а точнее - _;%;1972....откуда?? пример по выводу даты взяла из хелпа по билдеру... - и самое главное не могу сообразить, как организовать поиск поддрева...вроде и понятно - направо, налево..а как запоминать маршрут??....:(.... думаю мою функцию TextFind можно рационализировать и разбить на несколько, но это детали, может еще придумаю что-нибудь...не сильно критикуйте надеюсь на Вашу подсказку ;)...спасибо заранее |
|||
|
||||
| t_gran |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Уважаемый Laser, с радостью вам помогу, но для этого вы должны создать свою тему. Дело в том, что модераторы (да и я в частности) не приветствуют когда образуется в одной теме каша вопросов и ответов.
1. -------------------------------------------------------------------------------------------------
Правильно, и будет записывать мусор. Дело в том, что если вы используете ф-ию Insert, то изночально, при инизиализации вы должны обнулить указатель, но выделять память под него не нужно:
2. -------------------------------------------------------------------------------------------------
Ох и намудрили же Вы!
Вы после этого цикла поставе cout << endl и вывод информации начнётся нормально, с начала строки. 3. -------------------------------------------------------------------------------------------------
Повторюсь, с Builder-ом ничего общего не имею. Советую воспользоваться ф-ми оперирующими с типом time_t. Вот готовый пример работы со временем. 4. -------------------------------------------------------------------------------------------------
Зачем? Я не понял. Если вам нужно помнить позицию, то просто в функции возвращайте указатель на найденную вершину и всё. А потом "скармливаете" её другой ф-ии которая и будет в дальнейшем вести обработку данного поддерева. P.S.: Чтобы проблем с функциями не возникало советую скачать шикарный справочник: Полный справочник по С (Герберд Шилдт) -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||||||
|
|||||||||||||
| Энжи |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, спасибо за Ваше терпение и ответы
вы имеете ввиду что-то вроде такого:
или не совсем?? |
||||
|
|||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Хм.. Теперь я начал вроде понимать суть вопроса.
Как вы видите поиск будет осуществляться по ключу theKey. Результатом будет указатель на найденную вершину, иначе возвратит NULL. -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| Энжи |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, спасибо за идею,позаимствовала предложенную Вами функцию
код переделанной :
построила ориентируясь на предложенную ранее Вами функцию *Insert.. код вызова *Find такой :
Весь код программы:
Обобщу вышесказанное, выделив проблему - нет перехода на следующую вершину..Заранее спасибо за ответ P.s. сегодня сиделала пыталась еще что-то сделать - безрезультатно..и вспомнила что по условию нельзя пользоваться рекурсиями...((..функция Find не подойдет... Это сообщение отредактировал(а) Энжи - 29.12.2009, 21:04 |
||||||
|
|||||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
Наконец-то у меня появилось свободное время. В общем, вы немного не правы, но виной этому являюсь непосредственно я. Дело в том, что только сейчас я прочитал, что нужно пробежаться по самой длинной ветке. В итоге вот, что у меня получилось:
Изменения следующие: 1. Убраны ф-ии First и AddLeaf (они не нужны) 2. Убрана ф-ия Find, т.к. она всего лишь ищет узел по ключу 3. Добавлено 2-е ф-ии LenSubTree и MaxSubTree. Первая, определяет длину дерева, а вторая, возвращает максимальное по длине поддерево. В результате этого программа работает исходя из поставленных требований. P.S.: Желаю удачи! Это сообщение отредактировал(а) t_gran - 30.12.2009, 05:11 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| Энжи |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.12.2009 Репутация: нет Всего: нет |
t_gran, гиганстское спасибо за ашу помощь!да, теперь программа делает так как надо. правда нельзя было использовать рекурсии, но думаю преподаватель простит это маленькое отступление
t_gran - Вы самый лучший!Еще раз спасибо |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |