Сжать список, переместив все ненулевые элементы в левую часть, не меняя их порядок - Turbo Pascal
Формулировка задачи:
Решение задачи: «Сжать список, переместив все ненулевые элементы в левую часть, не меняя их порядок»
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 заменяется на ноль. Наконец, в конце цикла выводятся все ненулевые элементы массива. Код не использует вложенные списки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д