2016-11-10 1 views
-1

Ich versuche, Bruch in Dezimalzahl mit minimaler Anzahl von wiederholten Dezimalstellen in Klammern zu konvertieren. Es sollte wie folgt aussehen:Konvertieren von Bruch zu Dezimal in Pascal

für n=100, m=5 Ausgang 20

für n=184, m=5 Ausgabe 36.8

sollte

für n=1, m=3 Ausgang 0.(3) sollte

für n=11, m=24 Ausgang 0.458(3) sein sollte

sein sollte

für n=100, m=7 sollte Ausgabe sein 14.(285714)

Mein Programm ist für den letzten Bruch (100/7) fehlgeschlagen. Was mache ich falsch? Könnte mir jemand helfen?

Dies ist mein Code:

Program fraction2decimal(output); 
var n,m,remainder: integer; 

begin 
    read(n,m); 
    d := 0; 
    write (n div m); 
    remainder := n mod m; 
    if remainder <> 0 then write('.'); 
    while remainder <> 0 do 
    begin 
    if remainder = (remainder*10 mod m) then write('('); 
    write (remainder*10 div m); 
    if remainder = (remainder*10 mod m) then begin 
     write(')'); 
     break; 
    end; 
end; 
    remainder := remainder*10 mod m; 
end. 

Antwort

2

Der einzige

if remainder = (remainder*10 mod m) 

Linie prüft, ob eine Stelle wiederholt. Sie müssen nach mehreren Längen von sich wiederholenden Ziffern suchen. Offensichtlich wurde die 100/7 für genau das hinzugefügt.

Verwandte Themen