2016-11-10 3 views
-1

J'essaie de convertir une fraction en nombre décimal avec un nombre minimal de positions décimales répétées entre parenthèses. Il devrait ressembler à ceci:Convertir une fraction en décimal en Pascal

pour n=100, m=5 sortie doit être 20

pour n=184, m=5 sortie doit être 36.8

pour n=1, m=3 sortie doit être 0.(3)

pour n=11, m=24 sortie doit être 0.458(3)

pour la sortie n=100, m=7 devrait être 14.(285714)

Mon programme échoue pour la dernière fraction (100/7). Qu'est-ce que je fais mal? Quelqu'un pourrait-il m'aider?

Ceci est mon 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. 

Répondre

2

Le

if remainder = (remainder*10 mod m) 

ligne vérifie uniquement un chiffre se répète. Vous devez vérifier plusieurs longueurs de chiffres répétitifs. Évidemment, le 100/7 a été ajouté à l'exercice pour cela.