Пример 2.5. Дан массив X(N). Получить новый массив Y(N) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X.

Тест

Данные Результат
N=7 
X=(-1, 2, 0, 4, -3,-2,0) 
Y=(2, 4, 0, 0, -1, -3, -2)


Школьный АЯ
алг Новый Порядок (арг цел N, арг вещ таб Х[1:N], рез вещ таб Y[1:N])
нач цел i, k | k - индекс массива Y
  k := 0
  нц для i от 1 до N | Занесение в Y положительных чисел из X
    если X[i] > 0
       то k := k+1; Y[k] := X[i]
  все
  кц
  нц для i от 1 до N | Занесение в Y чисел, равных нулю, из X
  если X[i] = 0
  то k := k+1; Y[k] := X[i]
  все
  кц
  нц для i от 1 до N | Занесение в Y отрицательных чисел из X
  если X[i] < 0
  то k := k+1; Y[k] := X[i]
  все
  кц
кон

Turbo Pascal 
Program NewOrder;
  Uses Crt;
  Var N, i, k : Integer;
  X, Y   : Array [1..20] of Real;
BEGIN
  ClrScr;
  Write('Введите N = '); ReadLn(N);
  For i := 1 to N do
  begin
  Write('X[ ', i, ' ] = '); ReadLn(X[i])
  end;

  k:=0;
  For i := 1 to N do
  If
X[i]>0 then
  begin k:=k+1; Y[k]:=X[i]
  end;

  For i := 1 to N do
  If
X[i]=0 then
  begin k:=k+1; Y[k]:=X[i]
  end;

  For i := 1 to N do
  If
X[i]<0 then
  begin k:=k+1; Y[k]:=X[i]
  end;

  Write('О т в е т : полученный массив');
  For i := 1 to N do Write(Y[i] : 5 : 1);
  WriteLn;
ReadLn
END.
Блок-схема
(фрагмент)


QBasic
CLS : INPUT "N = "; N : DIM X, Y(N)
FOR i = 1 TO N
  PRINT "X("; i; ") = "; : INPUT X(i)
NEXT i

k = 0
FOR i = 1 TO N
  IF
X(i) > 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i

FOR i = 1 TO N
  IF
X(i) = 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i

FOR i = 1 TO N
  IF
X(i) < 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i

PRINT "О т в е т : полученный массив" ;
FOR k = 1 TO N
  PRINT Y(k) ;
NEXT k : PRINT
END