@p80286:
Zitat:
Das geht ganz gut ohne mod und div und kann ach mit 2,3,4,5,... stelligen Zahlen umgehen.
Hast du das denn wirklich mal probiert.
So, wie der Code in deinem Beitrag steht, wird er nicht funktionieren.
Warum?: Weil du auf eine StringList "dummy1" zugreifst, die nicht deklariert ist.
Ich hab das ganze auch mal durchgespielt und bemerkt, daß bei allen 4-stelligen Zahlen 6174 als sich wiederholende Differenz herauskommt.
Also hab ich mal Tante Google bemüht und bin auf diesen Link gestoßen.
http://en.wikipedia.org/wiki/6174_(number)
So sieht mein Code aus:
(das in meinem Code angesprochene "meResult" ist ein TMemo)
Delphi-Quellcode:
PROCEDURE TForm1.Work(ss:string);
var r,s,t:string; len,i,j,res,old:integer; h:char;
begin
res:=-1;
len:=Length(ss);
SetLength(t,len);
repeat
old:=res;
s:=ss;
// s sortieren
for i:=1 to len-1 do
for j:=i+1 to len do
if s[i]>s[j] then begin
h:=s[i];
s[i]:=s[j];
s[j]:=h;
end;
// s reverse in t stellen
for i:=1 to len do t[len+1-i]:=s[i];
res:=StrToInt(t)-StrToInt(s);
// res als String mit führenden Nullen in r
Str(res:len,r);
for i:=1 to len do if r[i]=' ' then r[i]:='0' else break;
meResult.Lines.Add(ss+' : '+t+' - '+s+' = '+r);
ss:=r;
until (res=old) or (meResult.lines.count>30);
end;