Проверь... Я не компилировал - мог ошибиться. Хотя вряд ли.
const
n = 10;
x: array[1 .. n] of integer =
( 1, 2, 0, 4, 5, 0, 0, 7, 8, 9);
var
i, j: integer;
numzero: integer;
begin
numzero := 0;
i := 1;
while i <= n - numzero do
if x[i] = 0 then
begin
for j := i to n-numzero-1 do
x[j] := x[j+1];
x[n - numzero] := 0;
numzero := numzero + 1;
end
else inc(i);
for i := 1 to n do
write(x[i]:4);
writeln;
readln
end.
Если понадобится сделать чуть более эффективнее:
const
n = 10;
x: array[1 .. n] of integer =( 1, 2, 0, 4, 5, 0, 0, 7, 8, 9);
var
i, j: integer;
numzero: integer;
begin
numzero := 0;
for i:=1 to n do if x[i]=0 then inc(numzero) else x[i-numzero]:=x[i];
for i:=n+1-numzero to n do x[i]:=0;
for i := 1 to n do
write(x[i]:4);
writeln;
readln
end.