Hi, also ich suche eine Prozedur, die die Zahlen aus einer ListBox in Zweiergruppen anordnet. D.h. in der ListBox stehen die Zahlen 1, 3, 5, 7. Dann soll in dem Arry festgehalten werden: [1,3 ; 5,7] [1,5 ; 3,7] [1,7 ; 3,5]. Also jedes mit jedem. Mein Code sieht dazu so aus:
Delphi-Quellcode:
procedure TForm1.BitBtn2Click(Sender: TObject);
var wahr:array[1..100] of boolean;
zahl:array[1..100] of real;
merk:array[1..50,1..2,1..1280] of real;
max:Integer;
i,l:Integer;
zaeler:Integer;
procedure rek(wahr:array of boolean;tiefe:integer);
var l:Integer; //Prüfvariable
i,ii:Integer;
begin
ShowMessage('Tiefe '+IntToStr(tiefe));
l:=0;
for i:=1 to max do
if wahr[i]
then l:=l+1;
if l<2 //Prüfung ob noch 2 leere vorhanden sind
then begin
zaeler:=zaeler+1;
exit;
end
else begin
for i:=1 to max-1 do begin
if wahr[i] then begin //wenn der Platz noch frei ist...
wahr[i]:=false;
ShowMessage('Max'+IntToStr(max));
ShowMessage('1.'+IntToStr(i));
for ii:=i+1 to max do begin
if wahr[ii] then begin
wahr[ii]:=false;
ShowMessage('2.'+IntToStr(ii));
merk[tiefe,1,zaeler]:=zahl[i]; //Zahlenpaar merken
merk[tiefe,2,zaeler]:=zahl[ii];
rek(wahr,tiefe+1);
end;
end;
end;
end;
end;
end;
begin
max:=ListBox1.Count;
for i:=1 to max do begin
zahl[i]:=StrToFloat(ListBox1.Items.Strings[i-1]);
wahr[i]:=true;
end;
zaeler:=0;
rek(wahr,1);
end;
Wo ist mein Fehler? Es kommt Stacküberlauf...
Danke schon mal im Voraus!
P.S.: Sorry, ich bin noch Anfänger...