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

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

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

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

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

textual
Листинг программы
  1. uses
  2.   crt;
  3. const
  4.   Nmax=50;
  5. var
  6.   mas : array[1..Nmax] of integer;
  7.   i,j,k,z  : integer;
  8. begin
  9.   i:=1;
  10.   While not SeekEoln do begin
  11.     read(mas[i]);
  12.     inc(i);
  13.   end;
  14.  
  15.   j:=1; z:=i-1;
  16.   while j <= i-1 do begin
  17.     if mas[j]=0 then begin
  18.       for k := j to i-2 do mas[k]:=mas[k+1];
  19.       mas[i-1]:=0;
  20.       dec(i);
  21.     end else inc(j);
  22.   end;
  23.  
  24.   for j := 1 to z do write(mas[j],' ');
  25.   readln;
  26. end.

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

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

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


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

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

11   голосов , оценка 4.273 из 5

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

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

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