В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается — 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.

Leave a Comment

8 + 1 =