![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Dunkel_L |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нужна рекрусивная фун-ция вывода нечётных чисел в стеке
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
To: Dunkel_L
Уточни, что именно тебе надо? Удалять из стека ВСЕ числа и распечатывать только нечетные, или ты хочешь оставить стек как он есть, но пройти по нему и напечатать все нечетные числа? (скажу сразу, для этого стек НЕ предназначен, у стека есть только 2 операции: Push(положить в стек) и Pop(изъять из стека), никаких просмотров быть не может.) + к этому, сам стек у тебя реализован? |
Dunkel_L |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, сам стек реализован.
Мне нужно пройти по нему и напечатать все нечетные числа. Если в стеки это нельза, то в очереди можно ![]() Тогда помогите в очередь написать фун-цию.(очередь так же реализована) |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
To: Dunkel_L
Мне не хотелось бы тебя огорчать, но это и в очереди не реализуется (Очереди и стек - фактически одно и то же, только у стека и запись и чтение происходят с одной стороны, а у очереди - с разных, но НИ там, НИ здесь нет функции доступа к отдельным элементам)... Из всех динамических структур данных это возможно только в списках. Сейчас подумаю, куда тут рекурсию за уши притянуть (ибо она в таком задании не нужна совершенно...) |
Dunkel_L |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нам задали, цитирую:
Написать рекурсивную процедуру, печатающую нечетные по порядку элементы. Вот так! Может нужно пройтись по шагам по стеку ,выбирая нечётные числа? Сообщение отредактировано: Dunkel_L - 15.11.2005 14:17 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
To: Dunkel_L
Ну пойми, ты не можешь ВЫБИРАТЬ четные или нечетные элементы из стека. Ты обязан это делать со всеми подряд. Обойму пистолета видел? Ты можешь извлечь 3, 5 и 7 патрон, не трогая остальных? |
Dunkel_L |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
А нельзя ,когда проходишь по стеку и найдя нечётный элемент ,
создать новый указатель? И так каждый раз при нечётном элементе. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Тогда так (используй 2 стека):
stack_1, stack_2: TStack;а вот куда здесь рекурсию прицепить - я не знаю... |
Дож |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код Procedure oddNumber(var stack_1, stack_2: TStack); begin If not(stack_1.empty) then begin if odd(stack_1.top) then writeln(stack_1.top); stack_2.push(stack_1.pop); oddNumber(stack_1, stack_2); {Рекурсия!} stack_1.push(stack_2.pop); end; end; Протестировал, вроде бы работает... -------------------- Доброго времени суток.
:nnn: |
Dunkel_L |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это всё хорошо, но куда этот код всавить.Теперь с этим помогите(Нужно вывод нечётных чисел забить под клавишу 4).За ранее СПАСИБО.
Вот и сам код
Сообщение отредактировано: Altair - 22.11.2005 7:28 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Dunkel_L, ты сначала процедуру menu перепиши как положено (без рекурсии), а потом будешь думать, как добавлять что-то в программу...
Твоя программа вылетит с сообщением Stack Overflow, если ты будешь добавлять/удалять/распечатывать данные достаточно много раз... У тебя Menu вызывает Menu, которая в свою очередь вызывает Menu, ... |
Dunkel_L |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Показал преподу лабу.Всё хорошо работает, НО это не через рекурсию.
![]() Мне нужно не создовать новый список, а нужно с одним единственным, через рекурсию. |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата нужно с одним единственным, через рекурсию Ну, когда научишься из обоймы вытаскивать 3, 5, 7 патроны, НЕ держа остальные в руках, и НЕ ставя их на стол, и в то же время НЕ теряя их, приходи, поделись алгоритмом... Тебе же объясняют, НЕ ПРЕДНАЗНАЧЕН для этого стек... Нет, ты опять за свое... |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
А вот обмануть компилятор можно:
procedure Odds(const p: ptr); После окончания работы этой процедуры top указывает туда же, куда и указывал ДО нее... Но все нечетные элементы уже распечатаны... |
Dunkel_L |
![]()
Сообщение
#15
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
БОЛЬШОЕ СПАСИБО Все нормально, СДАЛ!!! Ура!!!
|
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 7:02 |