OTHELLO22509
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору в общем , была поставлена задача : есть два массива упорядоченных по убыванию, создать массив ,состоящий из всех элементов исходных массивов , также упорядоченный по убыванию ... было решено тупо скопировать все элементы , а задем применить стандартную процедуру сортировки , выбран метод пузырька... Код: Const n = 8; m = 7; Type TType = Integer; arrType1 = Array[1 .. n] Of TType; arrType2 = Array[1 .. m] Of TType; arrType3 = Array[1 .. n+m] Of TType; Const a: arrType1 = (99, 77, 55, 33, 11, 9, 7, 5); b: arrType2 = (88, 66, 44, 22, 10, 8, 6); Procedure Bubble(Var source, sorted: arrType3); Procedure SwapIndex(i, j: Integer); Var T: TType; Begin move(sorted[i], T, SizeOf(TType)); move(sorted[j], sorted[i], SizeOf(TType)); move(T, sorted[j], SizeOf(TType)); End; Var i, j: Integer; Begin move(source, sorted, SizeOf(arrType3)); For i := 1 To n+m Do For j := n+m DownTo i Do If sorted[Pred(j)] < sorted[j] { change here } Then SwapIndex(Pred(j), j); End; Var c,d: arrType3; k: integer; Begin for k := 1 to n do begin c[k] := a[k]; end; for k := 1 to m do begin c[k+n] := b[k]; end; for k:=1 to m+n do write (c[k],' '); Bubble(c, d); writeln; for k:=1 to m+n do write (d[k],' ') End. | собственно все отрабатывает, но результат ПОСЛЕ сортировки странен : 88 77 66 55 44 33 22 11 10 9 8 7 6 6 5 то есть пропало 99 и появилось двойное 6 |