Другие языки программирования и технологии

Pascal, структура данных "Cтек"

1. Написать программу для работы со структурой данных "Стек".
2. Структура данных должна быть реализована на основе статической памяти.
3. Работа со структурой должна осуществляться с помощью case-меню. Предусмотреть наглядную визуализацию содержимого структуры.
Паскаль - это язык страдания. Всё должно делаться тупо, костыльно, многословно. Если вам легко писать на Паскале, свяжитесь с Никлаусом Виртом, и он примет меры.

Пример кода:
 program BDSMStack;
const
CAP = 1000;
type
Stack = record
data: array[1..CAP] of string;
top: integer
end;
var
st: Stack;
cmd: string;
elem: string;
blankPos: integer;

procedure PrintStack(var s: Stack);
var
i: integer;
begin
write('Стек: ');
for i := s.top downto 1 do write(' ', s.data[i]);
writeln
end;

begin
st.top := 0;
repeat
write('Введите команду (push sss / pop / print / exit): ');
readln(cmd);
blankPos := pos(' ', cmd);
if blankPos > 0 then begin
elem := copy(cmd, blankPos + 1, length(cmd) - blankPos);
delete(cmd, blankPos, length(cmd))
end
else begin
elem := ''
end;
case cmd of
'push':
if st.top < CAP then begin
st.top := st.top + 1;
st.data[st.top] := elem
end
else
writeln('Невозможно добавить элемент: не хватает места');
'pop':
if st.top > 0 then begin
writeln('Извлечён элемент ', st.data[st.top]);
st.top := st.top - 1;
end
else
writeln('Невозможно извлечь элемент: стек пуст');
'print', 'exit':
else writeln('Неизвестная команда: ', cmd)
end;
PrintStack(st)
until cmd = 'exit'
end.

Пример работы:
 Введите команду (push sss / pop / print / exit): push aaa
Стек: aaa
Введите команду (push sss / pop / print / exit): push корова
Стек: корова aaa
Введите команду (push sss / pop / print / exit): push стадо коров
Стек: стадо коров корова aaa
Введите команду (push sss / pop / print / exit): pop
Извлечён элемент стадо коров
Стек: корова aaa
Введите команду (push sss / pop / print / exit): pop
Извлечён элемент корова
Стек: aaa
Введите команду (push sss / pop / print / exit): pop
Извлечён элемент ааа
Стек:
Введите команду (push sss / pop / print / exit): pop
Невозможно извлечь элемент: стек пуст
Стек:
Введите команду (push sss / pop / print / exit): exit
Стек:
ВП
Валерий Плотников
54 053
Лучший ответ