Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написать программу на языке паскаль. !Срочно!

Андрей Кукушкин Ученик (96), на голосовании 1 неделю назад
Сформировать стек из целых чисел. Используя операции работы со стеком, удалить из него все числа, равные минимальному. Вывести результат.
Голосование за лучший ответ
Татьяна Просветленный (23245) 1 месяц назад
 program StackMinRemoval; 

const
MAX_SIZE = 100;

type
Stack = record
data: array [1..MAX_SIZE] of integer;
top: integer;
end;

procedure InitializeStack(var s: Stack);
begin
s.top := 0;
end;

procedure Push(var s: Stack; value: integer);
begin
if s.top < MAX_SIZE then
begin
s.top := s.top + 1;
s.data[s.top] := value;
end;
end;

function Pop(var s: Stack): integer;
begin
if s.top > 0 then
begin
Pop := s.data[s.top];
s.top := s.top - 1;
end;
end;

function IsEmpty(s: Stack): boolean;
begin
IsEmpty := s.top = 0;
end;

procedure RemoveMinValues(var s: Stack);
var
min, i: integer;
begin
min := s.data[1];
for i := 2 to s.top do
begin
if s.data[i] < min then
min := s.data[i];
end;

i := 1;
while i <= s.top do
begin
if s.data[i] = min then
begin
for i := i to s.top - 1 do
s.data[i] := s.data[i + 1];
s.top := s.top - 1;
end
else
i := i + 1;
end;
end;

procedure PrintStack(s: Stack);
var
i: integer;
begin
for i := 1 to s.top do
Write(s.data[i], ' ');
end;

var
s: Stack;
value: integer;

begin
InitializeStack(s);

// Заполнение стека
Push(s, 5);
Push(s, 2);
Push(s, 3);
Push(s, 2);
Push(s, 1);

Write('Исходный стек: ');
PrintStack(s);
Writeln;

RemoveMinValues(s);

Write('Стек после удаления минимальных значений: ');
PrintStack(s);
end.
fff qaaУченик (111) 1 месяц назад
татьяна ответьте пожалуйста на мой вопрос
Андрей КукушкинУченик (96) 1 месяц назад
Здравствуйте! Спасибо за помощь, подскажите пожалуйста что изменить в программе, что бы числа я заполнял самостоятельно?
Татьяна Просветленный (23245) Андрей Кукушкин, // Заполнение стека под комментарием // Заполнение стека
Похожие вопросы