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

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

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

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

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

textual
Листинг программы
var
    a: Array[Byte] Of ShortInt;
    i, j, count, n: Byte;
    temp: ShortInt;
begin
    repeat
        Write('n=');
        ReadLn(n);
    until (n > 0);
    Randomize();
    Write('Original array:');
    for i := 0 to n - 1 do
    begin
        a[i] := Random(11) - 5;
        Write(a[i]:4);
    end;
    i := 0; count := 0;
    repeat
        if (a[i] = 0)
        then
        begin
            Inc(count);
            for j := i to n - 1 - count do
            begin
                temp := a[j];
                a[j] := a[j + 1];
                a[j + 1] := temp;
            end;
        end
        else
            Inc(i);
    until (i + count >= n);
    WriteLn; Write('Modified array:');
    for i := 0 to n - 1 do
        Write(a[i]:4);
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
Похожие ответы