|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
Проверка существования структуры17.12.2011, 21:32. Показов 13301. Ответов 46
Метки нет (Все метки)
Гугл ничего не дал так, что думаю будет многим полезно.
Язык си, как проверить существует ли структура по данному адресу (была ли она задана)? В других языках есть try/catche на си вроде нет, только на си++.
0
|
|
| 17.12.2011, 21:32 | |
|
Ответы с готовыми решениями:
46
Проверка существования файла Проверка существования файла Проверка существования логина |
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
| 17.12.2011, 22:39 [ТС] | |
|
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|||
| 17.12.2011, 22:40 | |||
![]() соберите последнюю версию mingw. Там должно быть точно так же как и под юникс. Я был приятно удивлен когда поставил последнюю версию gcc и по случаю замечал что память с нулями, потом проверил - да так. Вы просто немного не так понимаете задачу, ну или подход к решению.
0
|
|||
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
| 17.12.2011, 22:42 [ТС] | |
|
Ну первый подход - чтобы работало, потом оптимизация и изменения - сдать надо через сутки
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||
| 17.12.2011, 22:45 | ||
|
вот это кстати сомнительно. Получается что поле структуры не может содержать данные в виде нуля. Ограничение.
0
|
||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||
| 17.12.2011, 22:54 | ||
|
0
|
||
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 17.12.2011, 23:07 | |
|
Надо ему вот и говорю что и как. Между прочим с оговоркой. Полагаться на особенности компилятора это очень сомнительная мысль. Ладно, вода, проехали.
0
|
|
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
| 17.12.2011, 23:12 [ТС] | |
|
Ладно сдаюсь - ничего не получается, как ни крути, а не знаю как сделать функцию, которая не затрет дерево при следующем вызове.
Добавлено через 1 минуту в задании в функцию передается только адрес корня и все, менять устройство структуры нельзя, как сделать это дерево?
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||
| 17.12.2011, 23:18 | ||
|
0
|
||
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
| 17.12.2011, 23:29 [ТС] | |
|
Разве ошибочным будет утверждение, что для добавления ветки к дереву необходимо чтобы корень в массиве указателей на эти ветки имел везде NULL на первом проходе?
Добавлено через 1 минуту Иначе как в дальнейшем определять существует ветка или нет, потому что мусор будет расцениваться как существующая ветка. Добавлено через 12 секунд А при проверке вызывать ошибку.
0
|
|
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
| 17.12.2011, 23:55 [ТС] | |
|
на картинке есть узел 021 допустим он получился когда я первый раз вызвал функцию setDecoration, корень был пуст, были созданы узлы 0,02,021 теперь я хочу в это дерево записать узел в 012 функция при выделении памяти для узла 0 затрет значение адреса для узла 021, если этого не делать то к узлу 0211 доступа не будет так как память под конечную структуру никто не выделял и при попытке туда обратится будет access violation. Ничего кроме как проверки на существование узла я не могу придумать.
Подскажите пожалуйста, я не так задачу понял или что то упускаю?
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||||||||
| 18.12.2011, 00:21 | ||||||||
вот косой пример двоичного дерева. функция вставки Добавлено через 11 минут обход дерева надо переделать, так же кинуть исключение. Думаю что суть вы уловили.
0
|
||||||||
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
| 18.12.2011, 00:45 | ||||||
|
awpe, Вы не совсем понимаете как строятся деревья. На википедии есть неплохие статьи по двоичным деревьям. Вот пример дерева поиска с функцией вставки и обхода, реализованных посредством рекурсии:
1
|
||||||
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
||||||
| 18.12.2011, 13:03 [ТС] | ||||||
|
вроде так должно работать согласно заданию
не понимаю в чем ошибка, если убрать работу со строками то ошибок нет, если убрать создание структур то тоже ошибок нет, вместе они не работают... Добавлено через 19 секунд Я про функцию setDecoration Добавлено через 30 минут ага понял, нельзя так присваивать значение для path[n], ладно буду передавать str, но там снова ошибка, программа вылетает причем каждый раз на новом месте... Добавлено через 45 секунд Заметил что место вылета зависит от того где стоят контрольные printf... В чем может быть проблема? Сейчас вылетает на str=(char *) malloc(q*sizeof(char*)); Добавлено через 9 минут Пожалуйста скажите где ошибка?
0
|
||||||
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 18.12.2011, 13:21 | |
|
awpe, пройдитесь с дебаггером по программе и все станет ясно. Не поможет - дайте задание, лучше переписать с нуля, чем пытатся разобратся.
0
|
|
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
||||||
| 18.12.2011, 13:35 [ТС] | ||||||
|
задание
новый код
Добавлено через 50 секунд Решил проблему со строками, теперь при вызове tmp=(TNODE *) malloc(sizeof(TNODE *)); программа рушится, дебаггер в dev c++ какой -то странный, нет времени разбираться.
0
|
||||||
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
|||||||
| 18.12.2011, 13:43 | |||||||
0
|
|||||||
|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
||||||
| 18.12.2011, 13:55 [ТС] | ||||||
аналогично здесь - int CreateTree( TNODE ** root, char * str, int decor ): TNODE *tmp; создаст указатель на объект типа TNODE потом (TNODE *) malloc(sizeof(TNODE *)) вернет указатель на область памяти для объекта типа TNODE этот указатель я приравниваю к tmp: "tmp=(TNODE *) malloc(sizeof(TNODE *));" Я где то запутался в указателях? Добавлено через 34 секунды Как правильно тогда?
0
|
||||||
| 18.12.2011, 13:55 | |
|
Проверка на существования файла Проверка условия существования треугольника Проверка существования файла с использованием ifstream() Проверка существования трехугольника с заданными сторонами, и определение его типа Проверка на существования ID Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|