Дан массив x(20). Сжать его так, чтобы были удалены все нулевые элементы - Free Pascal
Формулировка задачи:
Дан массив x(20). Сжать его так, чтобы были удалены все нулевые элементы.
Решение задачи: «Дан массив x(20). Сжать его так, чтобы были удалены все нулевые элементы»
textual
Листинг программы
n:=20; ............ i:=1; while i<=n do if x[i]=0 then begin if i=n then n:=n-1 else begin for j:=i to n-1 do x[j]:=x[j+1]; n:=n-1; end; end else i:=i+1;
Объяснение кода листинга программы
n := 20;— Объявляем переменнуюnи присваиваем ей значение 20, которое является верхним индексом массива.i := 1;— Объявляем переменнуюiи присваиваем ей значение 1, которое является первым индексом массива.while i<=n do— Запускаем цикл, который будет выполняться до тех пор, пока значение переменнойiменьше или равноn.if x[i]=0 then— Если значение элемента массиваxс индексомiравно 0, то выполняется следующий блок кода.begin— Начало блока кода.if i=n then n:=n-1— Если значение переменнойiравноn, то значение переменнойnуменьшается на 1, т.к. удаляя элемент с индексомn, мы уменьшаем размер массива на 1.else— Если значение переменнойiне равноn, то выполняется следующий блок кода.for j:=i to n-1 do— Запускаем цикл, который будет выполняться отiдоn-1.x[j]:=x[j+1]— Копируем значение элемента массиваxс индексомj+1в элемент с индексомj, т.е. удаляем элемент с индексомi.n:=n-1— Уменьшаем значение переменнойnна 1, т.к. удаляя элемент с индексомn, мы уменьшаем размер массива на 1.end— Конец блока кода.else i:=i+1;— Если значение элемента массиваxс индексомiне равно 0, то увеличиваем значение переменнойiна 1 и переходим к следующей итерации цикла.- Цикл завершается.