|
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
|
|
Проверка существования структуры17.12.2011, 21:32. Показов 12767. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ
Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
|
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем
Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026
. . .
|
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки
План доработки модели динамики микоризных симбиозов (EcM с гистерезисом)
Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
|
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
|
|
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|