Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Programm Hilfe
23. Okt 2011, 13:15
Hast du doch in #1 geschrieben, so oft wiederholen bis das Ergebnis der vorletzten Iteration dem Ergebnis der letzten Iteration entsprich (also 6174).
Delphi-Quellcode:
function GetFirstKaprekarsConstant(const Value: int64): int64;
var
T, MinValue, MaxValue, PrevResult: int64;
Number: array [1..10] of int64;
I, J, N, Count: integer;
begin
Result:= 0;
N:= Length(IntToStr(Value));
if (N in [3, 4, 6, 8, 9, 10]) and (Value > 0) then
begin
Result:= Value;
Count:= 0;
repeat
PrevResult:= Result;
for I:= 1 to N do
begin
*** Number[I] berechnen;
end;
*** Number sortieren
*** MinValue und MaxValue berechnen
Result:= MaxValue-MinValue;
until (Result = PrevResult) or (Count > 1000);
if Count > 1000 then Result:= 0; // Kein Ergebnis gefunden
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Value: int64;
begin
Edit2.Text:= '';
if TryStrToInt64(Trim(Edit1.Text), Value) then
Edit2.Text:= IntToStr(GetFirstKaprekarsConstant(Value));
end;
|
|
Zitat
|