Вообщем сама задача... (Если не решу до среду то мне )
Составить Алгоритм и программу ( мне или то или то ) , которые в массиве из N действительных чисел (N не превышает 25)упорядочивают по убыванию отрицательные числа и по возрастанию положительные. Взаимное расположение отрицательных и положительных чисел сохраняется.Вывести на экран исходный и модифицированный массивы. (Дополнительный массив создавать нельзя )
особую сложность составил сабж выделенный красным .
ЗАРАНЕЕ СПАСИБО
GoodWind
16.02.2006 21:25
храни в двух дополнительных переменных индексы предыдущего отрицательного и предыдущего положительного эл-та массива...
volvo
16.02.2006 21:44
GoodWind, а пошаманить?
lermontoff, в принципе, можно ЧУТЬ-ЧУТЬ подправить процедуру Bubble из нашего FAQ-а, чтобы она делала то, что тебе нужно... Hint: для этого нужно передать в процедуру еще один дополнительный параметр...
const n = 10; type arrType = array[1 .. n] of integer;
procedure Bubble(var ar: arrType; const n: integer; positive: boolean); var i, j, pred_j, T: Integer; begin for i := 1 to n do begin if (ar[i] < 0) = positive then continue;
for j := n downto i+1 do begin if (ar[j] < 0) = positive then continue;
pred_j := pred(j); while (pred_j > 0) and ((ar[pred_j] < 0) = positive) do dec(pred_j); if pred_j = 0 then break;
if (ar[Pred_j] > ar[j]) = positive then begin T := ar[Pred_j]; ar[Pred_j] := ar[j]; ar[j] := T end end; end end;
const arr: arrType = (1, 42, 33, -14, 5, -6, 7, -8, 9, 10); var i: integer; begin for i := 1 to n do write(arr[i]:4); writeln;
bubble(arr, n, true); bubble(arr, n, false);
for i := 1 to n do write(arr[i]:4); writeln; end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.