В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается

code: #pascal
program  massiv;
uses crt;
 
var i,n,k:integer;  a:array [1..100] of integer;
 
{начало процедуры вставки элемента "el" в массив на место "p"}
 procedure inMas(var r:integer;p:integer;el:integer);
 var i:integer;
 begin
  r:=r+1;
  for I := r downto p+1 do
    a[i]:=a[i-1];
  a[p]:=el;
 end;
 {--- корнец процедуры вставки---}
 
 {начало процедуры удаления элемента с индексом "p" из массива}
 procedure delMas(var r:integer;p:integer);
 var i:integer;
 begin
  for I := p to r-1 do
    a[i]:=a[i+1];
  r:=r-1;
 end;
  {--- корнец процедуры удаления---}
 
 
{начало самой программы}
begin
write('N= ');  readln(n); {считываем размер массива}
writeln('Vvedite elementy massiva:');
for i:=1 to n do begin
write('A[',i,']= '); readln(a[i]); end; {считываем элементы массива}
clrscr;
 
for i:=1 to n do write(A[i],' '); {выводим массив}
 
 k:=1;
  for I := 1 to n  do {идём по массиву}
      if a[i]<0 then {и отрицательные элементы}
      begin {ниже перемещаем в начало, посредством}
        inmas(n,k,a[i]);{вставки }
        delmas(n,i+1);  {и удаления}
        inc(k);
      end;
 
 
    writeln ;
    for i:=1 to n do write(A[i],' '); {выводим ПОЛУЧИВШИЙСЯ массив на экран}
 
  readln;
end.      
Поделиться:

Похожие статьи: