Лічильник
Сьогодні Разом
Відвідувань 423 5307127
Авторізацій 66 426693
Користувачів 39 2656
Статья

28. Удалить первый нулевой элемент массива


Сведем эту задачу к предыдущей: удалим k-й элемент массива, это мы уже умеем. Но для этого надо знать k - индекс первого нулевого элемента массива. В принципе на уроке по циклам while мы уже рассматривали такой алгоритм, напомним его: Начинаем с первого элемента массива, просматриваем массив, пока не встретим нулевой элемент массива или не дойдем до конца массива, так и не найдя нулевой элемент:
 k := 1;
 while (k <= n) and (a[k] <> 0) do
   k := k + 1;
Итак, переменная k содержит индекс первого нулевого элемента массива, если он существует, или на единицу больше, чем значение переменной n. Это означает, что в массиве нет нулевого элемента (, а значит и удалять ничего не нужно).
 if (k <= n)
   then begin
          // Удалить k-й элемент массива
        end
Объединим в единое целое получим:
 k := 1;
 while (k <= n) and (a[k] <> 0) do
   k := k + 1;
 if (k <= n)
   then begin
          n := n - 1;
          for i := k do n do
            a[i] := a[i + 1]
        end
И так, первый нулевой элемент массива удален. А как быть, если надо удалить все нулевые элементы массива?