Создать стек со случайными целыми числами. Удалить минимальный элемент - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Создать стек со случайными целыми числами. Удалить минимальный элемент.

Решение задачи: «Создать стек со случайными целыми числами. Удалить минимальный элемент»

textual
Листинг программы
  1. type
  2.   titem = integer;
  3.   pstack = ^tstack;
  4.   tstack =
  5.   record
  6.     data : titem;
  7.     next : pstack;
  8.   end;
  9.  
  10. procedure push(var s : pstack; X : titem);
  11. var q : pstack;
  12. begin
  13.   new(q);
  14.   q^.next := s;
  15.   q^.data := X;
  16.   s := q;
  17. end;
  18.  
  19. function pop(var s : pstack) : titem;
  20. var q : pstack;
  21. begin
  22.   result := s^.data;
  23.   q := s;
  24.   s := s^.next;
  25.   dispose(q);
  26. end;
  27.  
  28. procedure print(s : pstack);
  29. begin
  30.   while s <> nil do
  31.   begin
  32.     write(s^.data:4);
  33.     s := s^.next;
  34.   end;
  35.   writeln;
  36. end;
  37.  
  38. var
  39.   s1 : pstack;
  40.   s2 : pstack ;
  41.   i, min_i : integer;
  42.   it, min : titem;
  43.  
  44.  
  45. begin
  46. s1:=nil;
  47. s2:=nil;
  48.   randomize;
  49.   for i := 1 to 10 do
  50.     push(s1, random(50));
  51.   print(s1);
  52.  
  53.   min := 50;
  54.   i := 0;
  55.   while (s1<>nil) do
  56.   begin
  57.     it := pop(s1);
  58.     inc(i);
  59.     if it < min then
  60.     begin
  61.       min_i := i;
  62.       min := it;
  63.     end;
  64.     push(s2, it);
  65.   end;
  66.  
  67.   while (s2<>nil) do
  68.   begin
  69.     it := pop(s2);
  70.     if i <> min_i then push(s1, it);
  71.     dec(i);
  72.   end;
  73.   print(s1);
  74.  
  75. end.

Объяснение кода листинга программы

В данном коде используется стек, созданный на основе динамического массива, который содержит случайные целые числа. В этом коде есть следующие процедуры и функции:

  1. push: Эта процедура добавляет новый элемент в стек. Она создает новый указатель на стек, присваивает его полю next нового элемента и присваивает значение поля data нового элемента.
  2. pop: Эта функция удаляет верхний элемент из стека и возвращает его значение. Она получает указатель на верхний элемент стека, сохраняет его значение в переменной типа titem, удаляет текущий элемент и возвращает сохраненное значение.
  3. print: Эта процедура выводит все элементы стека. Она проходит через каждый элемент стека, начиная с верхнего, и выводит значение каждого элемента.
  4. s1: Это переменная типа pstack, которая является стеком для хранения чисел.
  5. s2: Это переменная типа pstack, которая используется для хранения чисел во время процесса поиска минимального числа.
  6. i: Это переменная типа integer, которая используется для отслеживания индекса текущего элемента в стеке.
  7. min_i: Это переменная типа integer, которая используется для хранения индекса минимального числа в стеке.
  8. it: Это переменная типа titem, которая используется для временного хранения значения текущего элемента при его удалении из стека.
  9. min: Это переменная типа titem, которая используется для хранения минимального числа. Вот список действий, выполняемых в коде:
  10. Создается новый стек s1 и инициализируется как пустой.
  11. В цикле добавляются 10 случайных чисел в стек s1 с помощью функции push.
  12. Выводится содержимое стека s1 с помощью функции print.
  13. Инициализируется переменная min значением 50 и переменная i значением 0.
  14. В цикле, пока стек s1 не пуст, происходит следующее:
    • Значение текущего элемента (определенного как it) удаляется из стека s1 с помощью функции pop.
    • Переменная i увеличивается на 1.
    • Если значение it меньше значения min, то обновляются значения min_i и min для хранения индекса и значения минимального числа соответственно.
    • Значение it добавляется в стек s2 с помощью функции push.
  15. В цикле, пока стек s2 не пуст, происходит следующее:
    • Значение текущего элемента (определенного как it) удаляется из стека s2 с помощью функции pop.
    • Если значение i не равно значению min_i, то значение it добавляется в стек s1 с помощью функции push.
    • Переменная i уменьшается на 1.
  16. Выводится содержимое стека s1 с помощью функции print.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы