Ich würde es so lösen:
Deine zulässigen Werte sind 1..15.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b : TByteArray;
i,j: Integer;
begin
randomize;
setLength(b,24);
for i:=0 to high(b) do
b[i]:=random(15)+1;
memo1.lines.add('Ausgabe Array b');
ausgabe(b);
setLength(a,4);
// Übertragung von b[0],b[6],b[12] und b[18] in das Array a
for i:=0 to high(a) do
a[i] := b[i*6];
memo1.lines.add('Ausgabe Array a');
ausgabe(a);
bubbleSort(a);
memo1.lines.add('Ausgabe Array a nach der Sortierung');
ausgabe(a);
// zweihhöchster und höchster Wert aus a
for i:=2 to 3 do
begin
for j:=0 to 3 do
if a[i] = b[j*6] then
b[j*6] := 0; // warum 0, weil 0 ein nicht zulässiger Wert ist.
end;
memo1.Lines.add('Ausgabe Array b nach der Ersetzung der zwei höchsten Werte aus Array A');
ausgabe(b);
bubbleSort(b);
memo1.Lines.add('Ausgabe Array b nach der Sortierung');
ausgabe(b);
end;
wobei TByteArray so ausschaut
Delphi-Quellcode:
:
type
TByteArray = Array of Byte;
und die Signatur von bubbleSort so:
procedure TForm1.bubbleSort(data:TByteArray);
Hier ein Beispieldurchlauf:
Code:
Ausgabe Array b
5 12 3 10 5 2 8 13 12 12 13 9 2 8 9 12 12 14 1 5 6 5 1 1
Ausgabe Array a
5 8 2 1
Ausgabe Array a nach der Sortierung
1 2 5 8
Ausgabe Array b nach der Ersetzung der zwei höchsten Werte aus Array A
0 12 3 10 5 2 0 13 12 12 13 9 2 8 9 12 12 14 1 5 6 5 1 1
Ausgabe Array b nach der Sortierung
0 0 1 1 1 2 2 3 5 5 5 6 8 9 9 10 12 12 12 12 12 13 13 14
Grüße
Klaus