![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Rocket |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Реализована программа для работы с динамическим стеком. Реализованы функции:
1. создания пустого стека, 2. проверки стека на пустоту, 3. добавления элемента в стек, 4. извлечение элемента из стека, 5. уничтожения стека.
Вылетает сразу же при запуске, в чем причина? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в чем причина? Для того, чтобы изменить значение указателя в функции, и оно стало доступно в вызывающей программе, надо передавать в функцию указатель на указатель... Вот так должна выглядеть функция newstack (add тоже придется изменить, там тоже должно меняться значение pup):inline void newstack(elem** pup) {Вызывать теперь вот так: newstack(&pup); |
Rocket |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
А какая-нибудь другая реализация этих функций существует?
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Что значит "другая"? Как реализуешь - так и будет... То что ты начал делать - тоже вполне можно привести к работоспособному виду...
|
Rocket |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Для того, чтобы изменить значение указателя в функции, и оно стало доступно в вызывающей программе, надо передавать в функцию указатель на указатель... Вот так должна выглядеть функция newstack (add тоже придется изменить, там тоже должно меняться значение pup): inline void newstack(elem** pup) {Вызывать теперь вот так: newstack(&pup); А почему необходимо использовать именно указатель на указатель и именно в этих функциях? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Я же написал: потому что указатель внутри ЭТИХ функций меняется, ты же в Паскале должен передавать параметр "по ссылке" (через Var), чтобы изменить его для внешней программы? В С++ можно было бы тоже передать по ссылке (через &), но поскольку ты пользуешься чистым С - там нет ссылок, приходится пользоваться указателем на параметр... Поскольку сам параметр - это "указатель на elem", то надо для его изменения пользоваться указателем на "указатель на elem".
|
Rocket |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Вот я переделал:
только теперь походу функция empty неправильно реализована, в чем косяк? |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Смотри:
#include<stdlib.h>Ну, и следи за синтаксическими ошибками... sixeof вместо sizeof - ты копируй то, что проверяешь, а не набирай здесь... А то вносишь лишние ошибки... |
Rocket |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
вот ещё функцию вывода решил добавить:
но она выводит совершенно непредсказуемый результат Сообщение отредактировано: Rocket - 8.12.2007 23:50 |
Rocket |
![]()
Сообщение
#10
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Так а как корректно реализовать функцию вывода элементов стека на экран?
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Проблема в функции TOadd... Вот так она работает:
void TOadd(elem **pelem, int datain) {А сама функция вывода на экран - void TOshow(elem *pelem) {P.S. Больше на твои вопросы я отвечать не буду. Я тебе написал, что не надо ставить точки с запятой где попало? Ты с удивительным упорством продолжаешь их ставить; ну, так продолжай... Без меня... Сообщение отредактировано: volvo - 9.12.2007 17:46 |
Rocket |
![]()
Сообщение
#12
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Сам с себя угораю... для какой цели понаставил ; почти после каждой } , понять не могу...
P.S. ну а если вернуться к проге, то в функциях извлечения елемента и удаления стека тоже какие-то непонятные и неведомые косяки... ![]() А, ну всё встало на свои места. Изменил как и в добавление. Сообщение отредактировано: Rocket - 9.12.2007 18:46 |
Flanker |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Привет Rocket!!! А ты не мог выложить здесь файл с этой прогой со стэком? буду очень признателен))))
|
Rocket |
![]()
Сообщение
#14
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Привет Rocket!!! А ты не мог выложить здесь файл с этой прогой со стэком? буду очень признателен)))) Держи! Прикрепленные файлы ![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 15:11 |