![]() |
|
Модераторы: bsa |
![]()
|
|
| ника18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 16.12.2010 Репутация: нет Всего: нет |
Описать класс Lifo, реализовать стек произвольного размера для хранения целых чисел, добавление и извлечение одиночного элемента из стека, реализовать при помощи перегрузки операций >, <. Добавлять последовательность элементов, перегрузив оператор >>. Вывод на экран - <<.
Проблема в реализации, иногда удаление норм работает, а иногда при удаление прога вылетает Пример когда вылетает Это реализация сейчас в стеке один элемент, равный 0 Выберете операцию: 1-загрузить в стек один элемент; 2-загрузить в стек несколько элементов; 3-вывести последний загруженный эл-т и удалить его; 4-вывести весь стек 1 введите элемент 2 Выберете операцию: 1-загрузить в стек один элемент; 2-загрузить в стек несколько элементов; 3-вывести последний загруженный эл-т и удалить его; 4-вывести весь стек 2 сколько еще элементов будет загружено в стек? 4 Введите1элемент 4 Введите2элемент 5 Введите3элемент 6 Введите4элемент 7 Выберете операцию: 1-загрузить в стек один элемент; 2-загрузить в стек несколько элементов; 3-вывести последний загруженный эл-т и удалить его; 4-вывести весь стек 4 Весь стек: 7 6 5 4 2 0 Выберете операцию: 1-загрузить в стек один элемент; 2-загрузить в стек несколько элементов; 3-вывести последний загруженный эл-т и удалить его; 4-вывести весь стек 3 вводим 3 и прога вылетает, почему так и как это исправить? Код C++
|
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Твой класс работает с динамической памятью, а деструктор у тебя отсутствует. Не совсем логично перегружать операторы больше и меньше для заполнения стека, луычше уж создать ф-ции члeны push и pop. И еще поидеи конструктор по умолчанию не должен заполнять стек, а должен только присвоить указателю на стек NULL.
|
|||
|
||||
| ника18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 16.12.2010 Репутация: нет Всего: нет |
а меня думаешь спрашивали, как логичнее???? это задание такое выше читай
|
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
будь проще и люди к тебе потянуться а по теме, ты удаляешь весь стэк, и хочешь чтобы он потом тебе вывел элемент? класно |
|||
|
||||
| ника18 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 16.12.2010 Репутация: нет Всего: нет |
честно не совсем поняла я с сети прогу брала, эту часть и сама в ней не могу разобраться
|
|||
|
||||
| Чoо |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
ника18, если мы "эмулируем" работу стека, то при выводе элементов мы их извлекаем из стека, то бишь удаляем. Если бы сохраняли, то это был бы уже не стек, а список.
Проще стек ппредставить как стопку тарелок. Положили тарелку в стопку - добавили элемент в стек. Положили много тарелок. Затем, что бы вытащить первую, нам надо по очереди вытащить все те что сверху - извлечь из стека. Ну или другими словами, помещая в стек, мы сохраняем в нем элемент, извлекая из стека - удаляем элемент. При чем, нельзя извлечь элемент из середины. а программа вылетает, потому что не сделали контроль: если стек пуст, то все-равно программа пытается извлечь элемент. вопщем ща гляну чо сделать можно Добавлено @ 02:51
вот эти две функции замените. Хотя реализация мне не нравится. Цикл, в котором работаем со стеком, не бесконечный. Ну и меню надо чуть переписать:
Что элемент будет удален писать не надо, и так понятно - стек же. Это сообщение отредактировал(а) Чoо - 17.12.2010, 14:48 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
| Чoо |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
а надо бы. если не понятно - запускать программу в пошаговом режиме и смотреть что происходит. Добавлено через 7 минут и 41 секунду деструктор. Куда-нибудь вставьте
-------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |