Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#1

Beliebig lange Dezimalstellen ab einer beliebigen Stelle...

  Alt 14. Okt 2010, 21:43
Hier ist mal ein kleiner Codesnippet, welchen ich verfasst habe, um diverse Programmieraufgaben (beispielsweise die hier) zu lösen.

Code:
(Aufgabe, falls die Seite irgendwann einmal down gehen sollte)
Infinite division

Calculate 13155187 / 13417 with 5000 decimals.
The solution is the last 6 numbers (of those 5000 decimals).
Delphi-Quellcode:
type
  TByteArray = Array of Byte;

function GetDecimalValues(Dividend: Integer; const Divisor: Integer; From: DWord; const Digits: DWord): TByteArray;
var
  BeforeComma: Boolean;
  Remainder: Integer;
  Pos, i: Integer;
begin
  if From = 0 then
    From := 1;
  if Digits = 0 then
    Exit;
  SetLength( Result, Digits );
  BeforeComma := True;
  repeat
    Remainder := Dividend mod Divisor;
    if (Remainder < Divisor) and (BeforeComma) then
    begin
      BeforeComma := False;
      Pos := 0;
    end;
    i := Pos - From + 1;
    if (i < Digits) and (i >= 0) then
      Result[i] := ( Remainder * 10 ) div Divisor;
    Dividend := Remainder * 10;
    if not BeforeComma then
      inc( Pos );
  until Pos >= From + Digits - 1;
end;

// Möglicher Aufruf:
var
  D: TByteArray;
begin
  { 113 / 35 = 3,228571428571428571428... }
  D := GetDecimalValues( 113, 35, 1, 4 );
// D = [2,2,8,5]
end;
MfG,
Aphton
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat