![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ZimOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 1.12.2013 Репутация: нет Всего: нет |
Пишу программу для сортировки списка слов в алфавитном порядке через двоичное дерево. Сначала написал аналогичную программу для сортировки последовательности целых чисел по возрастанию, все работает. Попытался переделать под строки, не работает, не могу найти ошибку, программа ничего не печатает.
Код прокомментирован, так же напротив некоторых строк есть в комментарии строка, которая была на этом месте для сортировки чисел. Заранее спасибо за помощь.
|
|||
|
||||
| feodorv |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Ну ещё бы...
Один-единственный char - это не строка, это просто один символ. Если хотите строку и не хотите возиться с выделением под неё памяти, можно в элементе дерева прописать массив символов максимального для строк (а это у Вас 256 символов) размера:
(вообще, элемент дерева называют leaf'ом, tree - это уже всё дерево целиком). Соответственно, присвоение символу значения указателя никак не сохраняет прочтённую строку в памяти для дальнейшего использования:
Так можно делать с int, но так не получиться со строками. Схема a la шаблоны C++ здесь никак не сработает. Тогда для нашего простого случая всё это будет иметь такой вид:
(здесь константы могут быть переписаны через sizeof(p->string)). Ну и печать символа как строки: может привести программу к краху. Удивительно, что она у Вас лишь ничего не печатает. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||
|
|||||||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Ах, да, забыл про сравнения.
Строки сравниваются не указателями, а посимвольно. Обычно для этого используют функцию strcmp. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |