e-olymp 6123. Стек с защитой от ошибок

Задача

Стек с защитой от ошибок

Реализуйте структуру данных «стек«. Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push n

Добавить в стек число n (значение n задается после команды). Программа должна вывести ok.

pop

Удалить из стека последний элемент. Программа должна вывести его значение.

back

Программа должна вывести значение последнего элемента, не удаляя его из стека.

size

Программа должна вывести количество элементов в стеке.

clear

Программа должна очистить стек и вывести ok.

exit

Программа должна вывести bye и завершить работу.

Входные данные

Команды для стека.

Выходные данные

Соответствующие значения для каждой команды(см. выше).

Тесты

Последовательность Результат
1 push 2
back
pop
size
pop
push 1
size
exit
ok
2
2
0
error
ok
1
bye
2 push 3
push 1
push 5
size
pop
size
exit
ok
ok
ok
3
5
2
bye
3 back
push 9
pop
pop
exit
error
ok
9
error
bye
4 size
push 1
size
back
pop
exit
0
ok
1
1
1
bye

Код

Решение

Создаем структуру в которой реализуем все команды для стека с помощью функций и указателя cursorcursor указывает на последний элемент в строке. Изначально cursor , т.к. элементы в массиве, на которые бы он указывал, отсутствуют.

push n  записывает в ячейку с номером cursor элемент n.size возвращает cursor т.е. действительный размер стека.pop возвращает последний помещённый в стек элемент, то есть элемент с номером pointer+1 , при этом удаляя его из стека. back возвращает последний помещённый в стек элемент, то есть элемент с номером cursor-1.В обоих случаях для проверки того, пуст ли стек, используется логическая функция error. clear обнуляет массив cursor и присваивает cursor начальное значение = -1.Команды считываются и выполняются пока не будет введено exit, после чего выведется соответствующее сообщение и программа завершится.

Ссылка на Ideone

2 thoughts on “e-olymp 6123. Стек с защитой от ошибок

  1. У Вас печать происходит и в методах класса и в вызывающей функции. Это архитектурная ошибка. Методы класса должны возбуждать исключительную ситуацию. Печать должна происходить только при обработке исключений в вашем случае в методе main)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *