Nickolay.info. Алгоритмы. Разбиение массива на положительные и отрицательные элементы

Одномерный массив A[N] состоит из положительных и отрицательных элементов. Требуется с помощью одного оператора цикла сформировать массив B[N], помещая в него элементы массива A таким образом, чтобы в начале стояли все положительные элементы, а затем все отрицательные. Порядок следования отдельно положительных и отдельно отрицательных элементов в массиве B должен быть таким же, как в исходном массиве A.

Задача очень проста. В единственном цикле по i выбираем элементы a[i] и a[n-i+1] (соответственно, очередной элемент слева и справа). Если a[i] положителен, пишем его в b[k] и увеличиваем счётчик k, которому до цикла было присвоено значение 1. Если a[n-i+1] отрицателен, пишем его в b[q] и уменьшаем q, до цикла счётчику q было присвоено значение n.

const n=6;
const a:array [1..n] of integer = (
 1,2,-3,-4,5,6
);
var b:array [1..n] of integer;
 i,k,q:integer;
begin
 k:=1; q:=n;
 for i:=1 to n do begin
  if a[i]>0 then begin
   b[k]:=a[i]; inc(k);
  end;
  if a[n-i+1]<0 then begin
   b[q]:=a[n-i+1]; dec(q);
  end;
 end;

 writeln;
 for i:=1 to n do write (b[i],' ');
 reset (input); readln;
end.

Рейтинг@Mail.ru

вверх гостевая; E-mail