[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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(N), 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 i = 1 TO N
  PRINT Y(i) ;
NEXT i : PRINT
END

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]