|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2017, 03:36 | #1 |
Новичок
Джуниор
Регистрация: 22.11.2017
Сообщений: 2
|
реализацию СТЕКА (ввод-вывод элементов из него). Изначально (в примере) был фиксированный лимит в 100 элементов, а лимита быть не должно по заданию
Бьюсь с этим уже который день, не сплю...
Переделываю готовую реализацию СТЕКА (ввод-вывод элементов из него). Изначально (в примере) был фиксированный лимит в 100 элементов, а лимита быть не должно по заданию, мол нужно самим установить размер (динамический тип). Я попытался это сделать разными способами, но куча ошибок каждый раз. Исправьте код, пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! (Прошу прощения, если как-то вставил не так, я здесь впервые) Код:
|
22.11.2017, 09:06 | #2 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Если человек ничего не знает (ты говоришь: "я скачал программу... не знаю что править..."), тогда здесь бабки за такое берут. Ну, а если ты платить не хочешь, тогда нужно пахать...
Я тебе писать ничего не буду (и врятли кто-то будет), а просто порассуждаю теоретически. Но, сначала пять советов: 1) поищи на форуме примеры реализации стека - ты не первый кто подобным интересуешься; 2) не надо править уже готовую программу (ошибки, со временем, только очень быстро растут), а просто начни новую программу (с чистого "main") и по чуть-чуть переноси куски кода себе. Но, при этом, часто компилируй программу: написал одну функцию - скомпилируй, а если ошибка образовалась - сразу её поправь... Понимаешь? Расправляться с ошибками по отдельности. Но последний совет предполагает, что ты хоть немного умеешь программировать. Но самое главное: тестируй те кусочки кода, над которыми только что работал. Именно тестируй - подавай в функцию разные значения переменных и смотри что она выводит. Иногда приходиться писать дополнительный/временный код, чтобы проверить этот кусочек программы...; 3) Активно пользуйся средствами отладки... Ты знаком с таким термином? Выполнять программу по шагам (и на каждом шаге смотреть как изменились переменные)? 4) прочитай мой пост 4-ре раза... С первого раз, я по себе сужу, ты больше половины информации не воспримешь. 5) Я плохо знаю тему "стеков", поэтому критично относись к моим словам: можешь со мной спорить, высказывать своё мнение по разным вопросам (например, по поводу моих знаний и моей личности) и т.д. Это всё приветствуется. ___________________________________ ______________ Расскажи о коде... Только не подробно, а в общем... Своими словами... Ты пишешь: "мне надо растущий/убывающий стек". Но, если исключить применение библиотечной технологии "STL stack", существует два вида подобной реализации: динамический массив и списки. Оба динамически управляемые, но во втором случае в описании структуры есть указатель (непосредственно, чтобы построить связи между узлами): 2.jpg Но, ничего подобного я у тебя не наблюдаю... Вместо этого я вижу объединение определение структуры и функций (см. вывод "i" на экран) Ты знаешь, что такое объединение (данных и функций в одном определении) называется классом. Может тебе нужен стек, который построен на экземплярах класса (а не на экземплярах структуры)? ___________________________________ ________________ Второе что меня смущает -использование в одной программе и оператор "new" и оператор "malloc". Ведь это одно и тоже, только первый более новый (С++), а второй более старый (Си). ___________________________________ ________________ Так вот, вернусь через один абзац выше, если тему "списков" не затрагивать, а остановиться исключительно на "динамическом массиве", то создание такого массива делается в одну строчку: Код:
Но, я советую, пока этого не делай,- а просто используй стек из массива простого типа "int". В конце сделаешь; если заработает на "int", то и заработает (с небольшими правками) и на "stack". ___________________________________ ________________ Но сначала скажи, как работает "стек"? И чем его работа (доступ к элементам) отличается от "очереди" и "дека"? ___________________________________ ________________ Ну наконец то, добрались до 1-го тебе задания: создай динамический стек, заполни его и выведи на экран. Но будь осторожен! Ведь недаром я спрашивал у тебя "как работает стек" - хранение элементов и доступ к них должен соответствовать этому описанию (а не "абы как"). Нарисуй, у себя, пример стека. Можешь использовать либо целый тип либо свой (пользовательский) - не принципиально. Покажи скриншот - консоль на фоне кода. Только не всего экрана, а то ничего не видно будет, а только полезную информацию. Ты умеешь делать скриншоты экрана? ___________________________________ ________________ p.s.1: ну всё, больше так много писать не буду. p.s.2: ну всё, крутись! Сделаешь это - можно будет тебе дать "добавление" одного узла к уже сформированному стеку... Ты же знаешь, что раз есть "new", то и есть "delete"? Понимаешь? Создаёшь дополнительный стек, у которого на 1-н больше элементов чем в основном; перебрасываешь туда всё из основного+дополнительный узел. Удаляешь основной (при "delete" освобождается только память, а сам указатель остаётся)..... и т.д. (по смыслу)... Жонглировать "new" и "delete"... Ну а других способов я не знаю, как в (уже сформированном) динамическом массиве добавить (или удалить) ещё один узел... Последний раз редактировалось ura_111; 22.11.2017 в 09:10. |
22.11.2017, 09:44 | #3 |
Новичок
Джуниор
Регистрация: 22.11.2017
Сообщений: 2
|
Во-1, я не говорил "я скачал программу, не знаю, что править". Я сказал, что нужно форматировать готовый код под динамическую структуру (я остановился на массиве, а не списке).
Во-2, я не такой ДАУН, которым ты меня мнишь...Пипец просто. Про скриншот вообще убило. Понимаешь, я пробовал ввести массив и через malloc и через new, я не знаю правда куда, в struct или в инициализацию стека (я пробовал по-разному), не знаю куда и когда нужно вводить элементы, т.к в примере это было в главной функции (взял как комментарий), пробовал по-разному, там что-то повторяется, где-то косяки с переменными, что-то не бьется, плюс разные ошибки в объявлении переменных - вообще мне не понятных, все как в примерах делал. Мне на твои вопросы отвечать НЕКОГДА и НЕЗАЧЕМ, я попросил помощи, хотел увидеть КАК ЭТО ДОЛЖНО ВЫГЛЯДЕТЬ и увидеть, где я ошибался. Спецам вроде тебя это минут 10 максимум. Мне нужно сдать это и забыть! |
22.11.2017, 11:05 | #4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
22.11.2017, 11:33 | #5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Цитата:
|
|
22.11.2017, 13:39 | #6 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
Помощь студентам
Попробуйте начать с создания типа "Элемент списка". Элемент списка д.б. такой же как и элемент массива, только ещё с одним полем - ссылкой.
И маленький совет - не мешайте C и C++, выберите что-нибудь одно. |
22.11.2017, 13:59 | #7 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Ну в оправдание ТС: у спеца же нашлось время настрочить длинный поучительный пост (кстати, спасибо, мне тоже пригодился)
Сори за оффтоп.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
22.11.2017, 14:02 | #8 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
|
22.11.2017, 14:21 | #9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Ну да, лень мне ехать на обед домой, чтобы готовить...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить элемент, находящийся в середине стека , если число элементов нечетное, или 2 средних элемента, если число элементов четное. | Юлия1997 | Помощь студентам | 0 | 23.10.2016 22:28 |
Вычислить сумму элементов матрицы в заштрихованной области. Ввод и вывод матрицы оформить в виде процедур. | KrokaKrola | Помощь студентам | 1 | 15.04.2015 15:17 |
[СИ] Ввод и вывод элементов структуры | edw1n | Помощь студентам | 1 | 08.04.2013 22:50 |
Вывод на экран двух первых отрицательных элементов стека | kwns | Общие вопросы C/C++ | 2 | 26.05.2010 10:57 |
TStringGrid - изначально мы видим одну ячейку в конце должно быть столько сколько заполнили. | Ensoph | Компоненты Delphi | 5 | 18.10.2007 22:24 |