Удаление элементов массива (КуМир)

Тема: 
Массивы

Дан массив, состоящий из целых чисел от 0 до 99. Удалить из него все элементы, значение которых меньше 50.

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

Алгоритм решения задачи:

  1. Если значение очередного элемента массива меньше 50, то записать на его место следующий элемент массива, на место следующего - тот, который стоит за ним и т.д. При этом уменьшить на 1 общее количество элементов массива.
  2. Иначе перейти к рассмотрению следующего элемента.
  3. Заполнить нулями элементы массива от следующего элемента от тех что остались до конца массива.

алг удаление элементов 
нач
  цел таб arr[1:20]
  цел i, j, m
 
  вывод "Исходный массив: "
  нц для i от 1 до 20
    arr[i] := int(rnd(100))
    вывод arr[i],' '
  кц
  вывод нс
 
  m := 20
  i := 1
  вывод "Исключенные элементы: "
  нц пока i <= m 
    если arr[i] < 50 то
      вывод arr[i],' '
      m := m - 1
      нц для j от i до m
        arr[j] := arr[j+1]
      кц
     иначе
      i := i + 1
    все
  кц
  вывод нс
 
  нц для i от m+1 до 20
  arr[i] := 0
  кц
 
  вывод "Измененный массив: "
  нц для i от 1 до 20
    вывод arr[i],' '
  кц
кон

Пример выполнения программы:

Исходный массив: 43 89 52 66 53 41 59 6 83 95 92 76 32 79 16 53 91 9 79 90 
Исключенные элементы: 43 41 6 32 16 9 
Измененный массив: 89 52 66 53 59 83 95 92 76 79 53 91 79 90 0 0 0 0 0 0