0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 9
|
|
1 | |
Считать из стека верхний элемент и меняет значение переменной стека12.11.2017, 23:24. Показов 2280. Ответов 11
Метки нет (Все метки)
0
|
12.11.2017, 23:24 | |
Ответы с готовыми решениями:
11
Извлечь из стека первый (верхний) элемент и вывести его значение D, а также адрес P2 новой вершины стека Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...) Подскажите как вывести верхний элемент стека в виде строкового представления Удалить элемент из стека по условию и добавить элемент в начало стека |
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
13.11.2017, 02:13 | 2 |
Если собираетесь сами писать, поясните, что такое «стек», «переменная стека», и как должно меняться значение этой переменной.
1
|
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 9
|
|
13.11.2017, 13:26 [ТС] | 3 |
POP – снимает элемент с вершины стека, перемещая вершину к следующему элементу
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
13.11.2017, 13:52 | 4 |
Пока стало только более запутано.
Ваша терминология расходится с общепринятой. В лиспе нет «стеков». Не верите — убедитесь: http://www.lispworks.com/docum... _glo_s.htm Термина «stack» нет. Поэтому, раз уж вы собрались делать дело, Кроме того, «переменная стека» — это что? По ссылке вы можете убедиться, что термина «stack variable» в лиспе тоже нет. Если вы имеете в виду переменную значением которой является стек (что бы это ни было), так и пишите. В лиспе есть стандартный макрос POP, который делает примерно то, что вы говорите, но со списками. http://www.lispworks.com/docum... /m_pop.htm Вы слово «POP» употребили в смысле этого макроса или просто как абстрактное имя? Короче, если вам надо написать велосипедную реализацию макроса POP, так и напишите, не путайте народ стеками и их переменными.
0
|
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 9
|
|
13.11.2017, 14:40 [ТС] | 5 |
Я сам понятия не имею, задание находится в теме "Макросы" и задание звучит так:
Определить макрос (POP стек), который читает из стека верхний элемент и меняет значение переменной стека. Больше никаких примечаний нет.
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
13.11.2017, 15:12 | 6 |
Если вы сами не понимаете задачу, как я могу её понять?
0
|
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 9
|
|
13.11.2017, 16:31 [ТС] | 7 |
Сделайте тогда,пожалуйста, реализацию макроса POP со списками, как вы писали выше.
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
13.11.2017, 16:45 | 8 |
Я не из тех участников форума, которые делают чужие задания. Или ждите, или делайте сами. Если будете делать сами, могу помочь.
Макрос — это функция, генерирующая код. Можно рассматривать его как сокращение для фрагмента кода. Во-первых, напишите пример вызова макроса (только не называйте его pop, стандартные функции и макросы нельзя переопределять) и обычный лисповый код, эквивалентный ему примеру.
0
|
41 / 74 / 15
Регистрация: 04.10.2017
Сообщений: 283
|
||||||
15.11.2017, 22:41 | 9 | |||||
В терминах lisp стек это список.
Добавлено через 20 минут Ну допустим вот тебе реализация. А что с ней делать дальше и как использовать ты знаешь?
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
16.11.2017, 00:16 | 10 |
Может, чей-то жаргон. В стандарте такого нет. Стек — абстрактный тип данных, его можно реализовать списками. А можно — не списками.
У неё глюк: неправильно работает, если имя списка — ret. Если макрос живёт в собственном пакете, который не экспортирует символ ret, то ничего страшного. (Если он не используется в коде в этом пакете.) Но обычно в таких случаях используют gensym. В данном случае можно обойтись вообще без переменной, если использовать prog1. Показать преподу и сказать, что сам написал.
2
|
41 / 74 / 15
Регистрация: 04.10.2017
Сообщений: 283
|
|
16.11.2017, 01:02 | 11 |
Список — точно такой же АТД как и стек. Например, в Object Pascal реализован на базе массива, в python доступ к элементу списка О(1) что так же позволяет считать его массивом. Так что я остаюсь при своих когда заявляю что стек в терминах lisp это список.
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
16.11.2017, 01:46 | 12 |
В CL (в стандарте) термин «список» (list) употребляется в двух значениях: 1) цепочка конс-ячеек специального вида; 2) тип — объединение cons и null. Цепочка конс-ячеек может служить реализацией АТД «список», но можно сделать и другие реализации.
Лично я не против, чтобы список называли хоть стеком, хоть чем. Просто раз список — стандартный термин (в смысле из стандарта CL), а стек — нет, то лучше пояснить свою терминологию. Вот, кстати говоря, есть такая библиотека http://quickdocs.org/cl-containers/api Там есть реализации и стеков, и очередей, и других типов данных. Какую роль в них играют конс-ячейки, я не знаю. В контексте этой библиотеки под «стеком» логично понимать именно её стек, а не список.
1
|
16.11.2017, 01:46 | |
16.11.2017, 01:46 | |
Помогаю со студенческими работами здесь
12
Delphi. Dynamic: описать функцию Рор(S) целого типа, которая извлекает из стека S первый (верхний) элемент Перемещать элементы из первого стека во второй, пока значение вершины первого стека не станет четным Перемещать элементы из первого стека во второй, пока значение вершины первого стека не станет четным Функция изымает элемент из стека и возвращает его значение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |