Pers.narod.ru. Алгоритмы. Разбиение массива на положительные и отрицательные элементы |
Одномерный массив 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.
гостевая; E-mail |