
Напишите программу, которая моделирует работу стека целых чисел, управляемого текстовыми командами. В начале работы стек пуст. Затем последовательно выполняются команды, записанные в файле input.txt . Для управления стеком используются две команды:
'+<число>' – втолкнуть число на вершину стека
'-' – удалить число с вершины стека
Требуется определить состояние стека после окончания выполнения всех команд.
Входные данные
Входные строки в файле input.txt содержат команды управления стеком. Последняя строка файла пустая.
Выходные данные
Программа должна вывести в одной строке через пробел все числа, оказавшиеся в стеке после выполнения всех команд. Слева должно быть дно стека, справа – вершина. Если стек пуст, нужно вывести слово 'EMPTY'. Если во время выполнения команд произошла ошибка, нужно вывести слово 'ERROR'.
Примеры
входные данные
+12
+23
-
+34
выходные данные
12 34
входные данные
+12
+23
-
-
выходные данные
EMPTY
Ответы на вопрос

Для решения задачи нам нужно разработать программу, которая будет работать с командами управления стеком. Стек — это структура данных, работающая по принципу LIFO (Last In, First Out), то есть последний добавленный элемент будет первым удалённым.
Давайте разберём требования и шаги для реализации программы.
Шаги решения:
Инициализация стека:
- Стек будет представлен как список в Python. В начале он пустой.
Чтение команд:
- Каждая строка в файле input.txt — это команда управления стеком.
- Команды могут быть двух типов:
+<число>
— добавление числа на вершину стека.-
— удаление числа с вершины стека.
Обработка команд:
- Для команды
+<число>
нужно добавить число в стек. - Для команды
-
нужно удалить элемент с вершины стека, если стек не пустой. Если стек пустой, это считается ошибкой.
- Для команды
Ошибки:
- Ошибка возникает, если попытаться удалить элемент из пустого стека.
Вывод результатов:
- После выполнения всех команд:
- Если стек пуст, нужно вывести
EMPTY
. - Если в стеке есть элементы, вывести их через пробел, начиная с дна стека до вершины.
- Если стек пуст, нужно вывести
- Если произошла ошибка, вывести
ERROR
.
- После выполнения всех команд:
Алгоритм:
- Инициализируем пустой стек.
- Читаем каждую строку командного файла.
- Выполняем команду:
- Если команда начинается с
+
, добавляем число в стек. - Если команда это
-
, удаляем верхний элемент из стека, если он существует.
- Если команда начинается с
- После обработки всех команд проверяем состояние стека:
- Если стек пуст, выводим
EMPTY
. - Если в стеке есть элементы, выводим их.
- Если была ошибка, выводим
ERROR
.
- Если стек пуст, выводим
Реализация программы на Python:
Пояснение к коду:
Чтение входных данных:
- Открываем файл
input.txt
для чтения. - Считываем все строки из файла, удаляя лишние пробелы и символы новой строки с помощью
strip()
.
- Открываем файл
Обработка каждой команды:
- Если строка начинается с
+
, пытаемся преобразовать число после+
в целое число и добавляем его в стек. - Если строка это
-
, проверяем, не пуст ли стек. Если не пуст, удаляем верхний элемент, иначе выводим ошибку.
- Если строка начинается с
Вывод результата:
- Если стек пуст после всех операций, выводим
EMPTY
. - Если в стеке есть элементы, выводим их через пробел, начиная с дна стека.
- Если стек пуст после всех операций, выводим
Обработка ошибок:
- Если в процессе выполнения команд возникнут ошибки (например, попытка удаления элемента из пустого стека или неправильный формат числа), программа выведет
ERROR
.
- Если в процессе выполнения команд возникнут ошибки (например, попытка удаления элемента из пустого стека или неправильный формат числа), программа выведет
Примеры:
Пример 1: Входные данные:
Программа выполнит:
- Добавит 12 в стек.
- Добавит 23 в стек.
- Удалит верхний элемент (23).
- Добавит 34 в стек.
Результат:
Пример 2: Входные данные:
Программа выполнит:
- Добавит 12 в стек.
- Добавит 23 в стек.
- Удалит 23.
- Удалит 12.
Результат:
Пример 3 (ошибка): Входные данные:
Результат:
Вывод:
Программа корректно управляет стеком, обрабатывая команды и выводя итоговое состояние стека или сообщение об ошибке в зависимости от ситуации.
Похожие вопросы









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









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