Все элементы, не равные нулю, переписать (сохраняя их порядок) в начало, а нулевые элементы – в конец массива - Free Pascal

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

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

Задан одномерный массив. Все его элементы, не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы – в конец массива. Новый массив не заводить.

Решение задачи: «Все элементы, не равные нулю, переписать (сохраняя их порядок) в начало, а нулевые элементы – в конец массива»

textual
Листинг программы
  1. var
  2.     a: Array[Byte] Of ShortInt;
  3.     i, j, count, n: Byte;
  4.     temp: ShortInt;
  5. begin
  6.     repeat
  7.         Write('n=');
  8.         ReadLn(n);
  9.     until (n > 0);
  10.     Randomize();
  11.     Write('Original array:');
  12.     for i := 0 to n - 1 do
  13.     begin
  14.         a[i] := Random(11) - 5;
  15.         Write(a[i]:4);
  16.     end;
  17.     i := 0; count := 0;
  18.     repeat
  19.         if (a[i] = 0)
  20.         then
  21.         begin
  22.             Inc(count);
  23.             for j := i to n - 1 - count do
  24.             begin
  25.                 temp := a[j];
  26.                 a[j] := a[j + 1];
  27.                 a[j + 1] := temp;
  28.             end;
  29.         end
  30.         else
  31.             Inc(i);
  32.     until (i + count >= n);
  33.     WriteLn; Write('Modified array:');
  34.     for i := 0 to n - 1 do
  35.         Write(a[i]:4);
  36. end.

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

В данном коде выполняется следующая последовательность действий:

  1. Вводится размер массива в байтах (n) с помощью цикла repeat-until и функции ReadLn.
  2. Инициализируются массив a и переменные i, j, count, n. Значения массива a заполняются случайными числами от -5 до 5 с помощью функции Random и цикла for.
  3. Выводится исходный массив с помощью цикла for и функции Write.
  4. Запускается цикл repeat-until, который выполняется до тех пор, пока i + count не станет больше или равным n.
  5. В условии цикла проверяется, является ли текущий элемент массива равным нулю.
  6. Если текущий элемент массива равен нулю, то увеличивается счетчик count, а элементы, начиная с текущего и до конца массива (за исключением нулевых), перемещаются в начало массива с помощью цикла for и временной переменной temp.
  7. Если текущий элемент массива не равен нулю, то увеличивается значение i.
  8. После выхода из цикла repeat-until выводится измененный массив с помощью цикла for и функции Write.

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


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

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

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

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

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

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