Сжать список, переместив все ненулевые элементы в левую часть, не меняя их порядок - Turbo Pascal

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

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

Дан список целых чисел. Требуется “сжать” его, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули - в правую часть. Порядок ненулевых элементов изменять нельзя, дополнительный список использовать нельзя, задачу нужно выполнить за один проход по списку. Распечатайте полученный список. Входные данные Вводится список чисел. Все числа списка находятся на одной строке. Выходные данные Выведите ответ на задачу. Примеры входные данные 4 0 5 0 3 0 0 5 выходные данные 4 5 3 5 0 0 0 0

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

textual
Листинг программы
uses
  crt;
const
  Nmax=50;
var
  mas : array[1..Nmax] of integer;
  i,j,k,z  : integer;
begin
  i:=1;
  While not SeekEoln do begin
    read(mas[i]);
    inc(i);
  end;
 
  j:=1; z:=i-1;
  while j <= i-1 do begin
    if mas[j]=0 then begin
      for k := j to i-2 do mas[k]:=mas[k+1];
      mas[i-1]:=0;
      dec(i);
    end else inc(j);
  end;
 
  for j := 1 to z do write(mas[j],' ');
  readln;
end.

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

Этот код на Turbo Pascal сжимает список, перемещая все ненулевые элементы в левую часть, сохраняя их исходный порядок. Вначале определяется максимальное количество элементов в списке (Nmax=50). Затем создается массив mas, который будет хранить список. Затем начинается цикл чтения элементов из массива. Цикл продолжается до тех пор, пока не будет достигнут конец файла. Каждый прочитанный элемент добавляется в массив mas. Далее начинается другой цикл, который проходит по всем элементам массива от первого до i-1. Если текущий элемент равен нулю, то происходит сжатие: все элементы справа от него (включая сам элемент) перемещаются влево, а элемент в позиции i-1 заменяется на ноль. Наконец, в конце цикла выводятся все ненулевые элементы массива. Код не использует вложенные списки.

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


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

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

11   голосов , оценка 4.273 из 5
Похожие ответы