Ich geb zu das es nicht schön ist, aber es tut's:
Delphi-Quellcode:
var
i : integer;
liste: tstringlist;
zahl1,zahl2,tmpzahl : string;
zahlgros,
zahlklein,
differenz,
altdifferenz : integer;
cnt : integer;
begin
liste:=tstringlist.Create;
tmpzahl:=edit1.Text;
differenz:=0;
cnt:=0;
repeat
altdifferenz:=differenz;
(* ** )
liste.clear;
( * ************* *)
for i:=1 to length(tmpzahl) do
dummy1.add(tmpzahl[i]);
dummy1.Sort;
zahl1:='';
zahl2:='';
for i:=0 to liste.Count-1 do begin
zahl1:=zahl1+dummy1[i];
zahl2:=dummy1[i]+zahl2;
end;
zahlgros:=strtoint(zahl2);
zahlklein:=strtoint(zahl1);
differenz:=zahlgros-zahlklein;
memo1.Lines.Add(tmpzahl+' / '+zahl2+'-'+zahl1+' = '+inttostr(differenz));
tmpzahl:=inttostr(differenz);
inc(cnt);
until (altdifferenz=differenz) or (cnt >20);
liste.Free;
end;
Das geht ganz gut ohne mod und div und kann ach mit 2,3,4,5,... stelligen Zahlen umgehen.
Gruß
K-H