uses crt;
var m:array[1..100] of integer;
n,a,b,i,k,j:integer;
begin
clrscr;
randomize;
write('Razmer massiva n=');
readln(n);
write('Nachalo intervala a=');
readln(a);
write('Konec intervala b=');
repeat
readln(b);
until b>a;
writeln('Ishodnyj massiv:');
for i:=1 to n do
begin
m[i]:=random(30)-10;
write(m[i],' ');
end;
writeln;
k:=0;
i:=1;
while i<=n do{пока не конец массива}
begin
if (abs(m[i])>=a)and(abs(m[i])<=b) then{если попадают в интервал}
begin
for j:=i to n-1 do m[j]:=m[j+1];{сдвигаем массив влево на 1 к этому элементу}
n:=n-1;{уменьшаем размер массива}
k:=k+1;{считаем}
end
else i:=i+1;{иначе переходим к ледующему элементу}
end;
for i:=n+1 to n+k do
m[i]:=0;{снова увеличиваем размер массива на количество удаленных элементов и заполняем нолями}
writeln('Rezultat:');
for i:=1 to n+k do{выводим то же количество что и было в начале}
write(m[i],' ');
readln
end.
Вариант 2
program prog;
uses crt;
type vector = array[1..1000] of integer;
var
a,b,c:vector;
i,l,m,n:integer;
procedure ShowVector(const a:vector;n:integer);
var
i:integer;
begin
for i := 1 to n do
write(a[i]:6);
writeln;
end;
procedure ReadVector(var a:vector;n:integer);
var
i:integer;
begin
writeln('Vvedite elementi massiva');
for i := 1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
writeln;
end;
procedure InitVector(var a:vector;n:integer);
var
i:integer;
begin
randomize;
for i := 1 to n do
begin
a[i] := random(100) - 50;
end;
writeln;
end;
procedure CompressVector(var ar:vector;n,a,b:integer);
var
i,j:integer;
temp : vector;
begin
j:=0;
for i := 1 to n do
begin
if (abs(ar[i])<=a)or (abs(ar[i])>=b) then
begin
j := j+1;
temp[j] := ar[i];
end;
end;
writeln(j);
ar := temp;
end;
begin
clrscr;
writeln('Vvedite razmer massiva');
write('n=');readln(n);
InitVector(a,n);
ShowVector(a,n);
writeln('Vvedite interval dlia zgatia massiva');
write('a=');readln(l);
write('b=');readln(m);
CompressVector(a,n,l,m);
writeln('Sgatii massiv');
ShowVector(a,n);
readln;
end.