Другие языки программирования и технологии

Pascal. Сортировка массива.

Дан массив из чисел - отрицательных и положительных в случайном порядке, например: "-321 -67 22 656 44 -12 -467 и т.д.", нужно его отсортировать так, чтобы соседние элементы были разного знака: "-312 22 -67 656 -12 44 -467".
Mar Ada
Mar Ada
1 604
Грубо говоря - тебе на нечетные места надо поставить отрицательные элементы, на четные - положительные. Вот и сделай это, через дополнительный массив - проще и быстрее всего.
Илья Сенатский
Илья Сенатский
92 261
Лучший ответ
Mar Ada Спасибо! А то всю голову сломал.
Вот для твоих данных:
const Size = 7;
var A : array [1..Size] of Integer; N, M : Byte;
procedure Swap(N1, N2 : Byte); var tmp : Integer; begin tmp := A[N1]; A[N1] := A[N2]; A[N2] := tmp; end;
begin
A[1] := -321; A[2] := -67; A[3] := 22; A[4] := 656; A[5] := 44; A[6] := -12; A[7] := -467;
for N := 1 to Size do Write(A[N], ' '); WriteLn;
N := 1;
repeat
if Odd(N) then
begin
if A[N] > 0 then
{ сюда нужно поставить отрицательный }
begin M := N; repeat Inc(M); until (M > Size) or (A[M] < 0); if M <= Size then Swap(N, M); end;
end
else
begin
if A[N] < 0 then
{ сюда нужно поставить положительный }
begin M := N; repeat Inc(M); until (M > Size) or (A[M] > 0); if M <= Size then Swap(N, M); end;
end;
Inc(N);
until N > Size;
for N := 1 to Size do Write(A[N], ' '); WriteLn;
end.
Сортировка, собственно, не нужна.
Нужно проходить по массиву и, если должно быть положительное значение, то искать его правее и ставить сюда.
Для отрицательных то-же самое...
Артур Урумбаев
Артур Урумбаев
50 980
пиши в аську 16 95271 43