
Вопрос задан 29.07.2023 в 11:04.
Предмет Информатика.
Спрашивает Эмирвелиева Нияра.
В заданном стеке найти минимальный по абсолютному значению элемент и удалить все элементы с таким
значением. (Искать, перекладывать в дополнительный стек, удалять при перекладывании обратно: [1,7,-1,3,2],получили [7,3,2]).

Ответы на вопрос

Отвечает Дроздюк Анастасия.
PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018
Внимание! Если программа не работает, обновите версию!
begin
var St:=new Stack<integer>;
foreach var k in ReadSeqInteger('Вводите данные:',ReadInteger('n=')) do
St.Push(k);
St.Println; // исходное содержимое стека
var St1:=new Stack<integer>;
var min:=MaxInt;
var k:integer;
while St.Count>0 do begin
k:=St.Pop;
if Abs(k)<min then min:=Abs(k);
St1.Push(k);
end;
while St1.Count>0 do begin
k:=St1.pop;
if Abs(k)<>min then St.Push(k)
end;
St.Println
end.
Пример
n= 5
Вводите данные: 2 3 -1 7 1
1 7 -1 3 2
7 3 2
Внимание! Если программа не работает, обновите версию!
begin
var St:=new Stack<integer>;
foreach var k in ReadSeqInteger('Вводите данные:',ReadInteger('n=')) do
St.Push(k);
St.Println; // исходное содержимое стека
var St1:=new Stack<integer>;
var min:=MaxInt;
var k:integer;
while St.Count>0 do begin
k:=St.Pop;
if Abs(k)<min then min:=Abs(k);
St1.Push(k);
end;
while St1.Count>0 do begin
k:=St1.pop;
if Abs(k)<>min then St.Push(k)
end;
St.Println
end.
Пример
n= 5
Вводите данные: 2 3 -1 7 1
1 7 -1 3 2
7 3 2



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для решения данной задачи описанного алгоритма, можно использовать два стека. Один стек будет использоваться для исходных данных, а другой - для временного хранения элементов, когда мы проверяем, является ли элемент минимальным по абсолютному значению.
Давайте представим алгоритм в виде шагов:
- Инициализируем два пустых стека:
mainStack
иtempStack
. - Проходим по всем элементам исходного стека
inputStack
. - Если стек
tempStack
не пуст и текущий элемент изinputStack
по абсолютному значению меньше, чем верхний элементtempStack
, то:- Очищаем стек
tempStack
. - Помещаем текущий элемент в
tempStack
.
- Очищаем стек
- Если стек
tempStack
пуст или текущий элемент равен абсолютному значению верхнего элементаtempStack
, то:- Помещаем текущий элемент в
tempStack
.
- Помещаем текущий элемент в
- После прохода по всем элементам, стек
tempStack
будет содержать только минимальные элементы по абсолютному значению. - Теперь копируем элементы из
mainStack
обратно вinputStack
, пропуская элементы, которые находятся вtempStack
. - Получаем итоговый стек
inputStack
, содержащий элементы без минимальных по абсолютному значению.
Давайте реализуем этот алгоритм на псевдокоде:
pythonfunction findAndRemoveMinAbs(inputStack):
mainStack = new Stack()
tempStack = new Stack()
# Шаг 2
for each element in inputStack:
# Шаг 3
while not tempStack.isEmpty() and abs(element) < abs(tempStack.peek()):
tempStack.pop()
# Шаг 4
if tempStack.isEmpty() or abs(element) == abs(tempStack.peek()):
tempStack.push(element)
mainStack.push(element)
# Шаг 6
while not mainStack.isEmpty():
element = mainStack.pop()
if not tempStack.isEmpty() and abs(element) == abs(tempStack.peek()):
tempStack.pop()
else:
inputStack.push(element)
# Результат будет в inputStack после выполнения функции
# Пример использования:
inputStack = new Stack([1, 7, -1, 3, 2])
findAndRemoveMinAbs(inputStack)
print(inputStack) # Выведет: [7, 3, 2]
Обратите внимание, что в реализации предполагается наличие стека с именем Stack
, который содержит основные операции стека, такие как push
, pop
, peek
, isEmpty
. Вы также можете использовать стандартную реализацию стека в своем языке программирования.


Похожие вопросы
Топ вопросов за вчера в категории Информатика

Информатика 2132

Информатика 63

Информатика 14

Информатика 32

Информатика 19

Информатика 15

Информатика 175

Информатика 31

Информатика 48
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili