Il est tout à fait possible de calculer le quotient de 2 nombres entiers
avec un nombre illimité de décimales. En voici la marche à
suivre:
Calculer et afficher la partie entière du quotient
(devant la virgule) grâce à la division entière
et
traiter la partie décimale de la manière répétitive suivante:
multiplier le reste de la division précédente par 1000
(pour des tranches de 3 chiffres)
calculer/afficher la partie entière du quotient
entier N, D, NT, Q, i
écrire "Introduisez le numérateur:"
lire N
écrire "Introduisez le dénominateur:"
lire D
écrire "Introduisez le nombre de tranches de 3 chiffres:"
lire NT
écrire N, "/", D
Q <-- N \ D
écrire " = ",Q," , "
N <-- N MOD D
pour i de 1 à NT faire
N <-- N*1000
Q <-- N \ D
N <-- N MOD D
si Q<10 alors écrire "00"
sinon si Q<100 alors écrire "0"
fsi
fsi
écrire Q, " "
fpour
PROGRAM Quotient;
USES CRT;
VAR N,D,P,Q: LONGINT;
NT,i:BYTE;
BEGIN
CLRSCR;
WRITE('Introduisez le numérateur de la fraction: ');
READLN(N);
WRITE('Introduisez le dénominateur de la fraction: ');
READLN(D);
WRITE('Introduisez le nombre de tranches de 3 chiffres, désirées dans la réponse: ');
READLN(NT);
P:=1000; {Pour des tranches de 3 chiffres }
WRITE(N,' / ',D); {Affiche le calcul à effectuer }
Q:=N DIV D; {Partie entière du quotient }
WRITE(' = ',Q,' , '); {Affiche la partie entière du résultat }
N:=N MOD D; {Reste de la division }
FOR i:=1 TO NT-1 DO {Il faut arrondir le dernier chiffre ==> NT-1 }
BEGIN
N:=N*P; {N est multiplié par 1000 }
Q:=N DIV D; {Partie entière du quotient }
N:=N MOD D; {Reste de la division }
IF Q<10 THEN WRITE('00',Q) {Q comporte 1 chiffre. Il faut le précéder de 00. }
ELSE IF Q<100 THEN WRITE('0',Q) {Q comporte 2 chiffres. Il faut les précéder de 0.}
ELSE WRITE(Q); {Q comporte 3 chiffres. }
WRITE(' ') {Marque la séparation des tranches de 3 chiffres. }
END;
N:=N*P; {N est multiplié par 1000 }
Q:=TRUNC(N/D+0.5); {Partie entière arrondie du quotient }
IF Q<10 THEN WRITE('00',Q) {Q comporte 1 chiffre. Il faut le précéder de 00. }
ELSE IF Q<100 THEN WRITE('0',Q) {Q comporte 2 chiffres. Il faut les précéder de 0.}
ELSE WRITE(Q); {Q comporte 3 chiffres. }
END.