Hier mal bis dato der aktuelle Code... also ich verstehs net wieso er bei einer identischen Zahlenkette, die jediglich mal verkehrt herum überprüft, nichts ausgibt und das andere mal gibt er was richtiges aus. Jedoch stimmt es eig. auch nicht das 17,42,7,4,16 sich nicht gerecht aufteilen läasst ....
Delphi-Quellcode:
[...]
type
TFeld = Array[1..5] of Integer ;
[...]
var
Form1: TForm1;
Feld: TFeld = (17,42,7,4,16) ;
// Selectiert: TFeld = (0,0,0,0,0) ;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var Erbe: Integer ;
function ErbeBerechnen(): Integer ;
var i, tmp: Integer ;
begin
tmp:= 0 ;
For i:= 1 To length(Feld) Do
begin
tmp:= tmp + Feld[i] ;
end;
result:= tmp ;
end;
procedure SucheLoesung(i, Erbhaelfte: Integer) ;
var j, tmp: Integer ;
begin
For j:= i To length(Feld) Do
begin
tmp:= Feld[j] ;
If (Erbe + tmp) = Erbhaelfte Then
begin
Erbe:= Erbe + tmp ;
Edit1.Text:= 'Gefunden _ ' + IntToStr(Erbe)
end
Else If (Erbe + tmp) < Erbhaelfte Then
begin
Erbe:= Erbe + tmp ;
If i < length(Feld) Then SucheLoesung(i+1, Erbhaelfte) ;
If Erbe > ErbHaelfte Then Erbe:= Erbe - tmp ;
end;
end;
end;
begin
Erbe:= 0 ;
If (ErbeBerechnen mod 2) = 0 Then SucheLoesung(1, ErbeBerechnen div 2)
Else Edit1.Text:= 'Erbe nicht teilbar!' ;
end;
end.