Пример 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