Другие языки программирования и технологии
Pascal. Сортировка массива.
Дан массив из чисел - отрицательных и положительных в случайном порядке, например: "-321 -67 22 656 44 -12 -467 и т.д.", нужно его отсортировать так, чтобы соседние элементы были разного знака: "-312 22 -67 656 -12 44 -467".
Грубо говоря - тебе на нечетные места надо поставить отрицательные элементы, на четные - положительные. Вот и сделай это, через дополнительный массив - проще и быстрее всего.
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.
Сортировка, собственно, не нужна.
Нужно проходить по массиву и, если должно быть положительное значение, то искать его правее и ставить сюда.
Для отрицательных то-же самое...
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.
Сортировка, собственно, не нужна.
Нужно проходить по массиву и, если должно быть положительное значение, то искать его правее и ставить сюда.
Для отрицательных то-же самое...
пиши в аську 16 95271 43
Похожие вопросы
- сортировка массива pascal
- Delphi - Сортировка массива и вывод его в стринг грид
- Задачка на сортировку массивов
- сортировка массива. какой метод сортировки массива самый быстрый и эффективный?
- c#. Сортировка массива в отдельном методе. Консольное приложение.
- Pascal одномерные массивы.
- Pascal . Дан массив вещественных чисел. Найти сумму элементов, номера которых являются простыми числами
- Сортировка массива (Паскаль) помогите пожалуйста
- Сортировка массива методом выбора.
- pascal одномерные массивы. дан массив А(30).