Данную задачу можно решить несколькими способами.

Способ 1. Скопировать в другой массив только нечетные элементы.

const N = 20 ; var a, b: array [ 1 .. N ] of integer ; i, m: byte ; begin randomize; for i: = 1 to N do begin a[ i] : = random(40 ) + 10 ; write (a[ i] : 3 ) ; end ; writeln ; m : = 0 ; for i: = 1 to N do if a[ i] mod 2 0 then begin m : = m + 1 ; b[ m] : = a[ i] ; end ; for i: = 1 to m do begin write (b[ i] : 3 ) ; end ; writeln ; end .

Это самый простой способ удаления элементов массива (в данном случае четных чисел), так как не требуется сжимать исходный массив. В представленном выше решении задачи переменная m хранит количество найденных нечетных элементов и в то же время, при заполнении второго массива является меняющимся индексом элементов.

Способ 2. Удалять четные элементы в текущем массиве, перезаписывая их расположенными правее нечетными.

const N = 10 ; var a: array [ 1 .. N ] of integer ; i, k, m: byte ; begin randomize; for i: = 1 to N do begin a[ i] : = random(40 ) + 10 ; write (a[ i] : 3 ) end ; writeln ; i : = 1 ; m : = N; while i