Hallo,
ich denke mal der didaktische Sinn ist ne Rekursion, also etwas der Art:
Delphi-Quellcode:
var
zahlen: array[1..10] of Integer; // die vorgegebenen Zahlen
ergebnis: Integer; // das vorgegebene Ergebnis
formelerg: String; // Var. für's Ergebnis
function myfunc(pos: Integer; mysum: Integer; formel:string): boolean;
begin
if pos>10 then
begin
if mysum<>ergebnis then
result:=false
else
begin
formelerg:=formel;
result:=true
end;
end
else
result:=myfunc(pos+1, mysum-zahlen[pos], formel+'-'+IntToStr(zahlen[pos])) or
myfunc(pos+1, mysum+zahlen[pos], formel+'+'+IntToStr(zahlen[pos]));
end;
if myfunc(2, zahlen[1], IntToStr(zahlen[1])) then
ShowMessage('Formel lautet: '+formelerg)
else
ShowMessage('Nicht lösbar!');
(Ja, ziemlicher Spagetti-Code... ist auch nicht getestet aber die Idee ist hoffentlich klar.)
Dieser Ansatz erfaßt alle möglichen Lösungen, es wird aber nur die letzte Ausgegeben...
[edit]es werden natürlich nur alle Möglichkeiten erfaßt, wenn booleasche Ausdrücke vollständig ausgewertet werden...[/edit]