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