Cette question n'a pas besoin de s'appliquer uniquement aux décimales terminales - les décimales répétitives peuvent également être converties en fractions via un algorithme.
Votre tâche consiste à créer un programme qui prend une décimale répétée en entrée et à sortir le numérateur et le dénominateur correspondants (en termes les plus bas) qui produisent cette expansion décimale. Les fractions supérieures à 1 doivent être représentées comme des fractions impropres comme 9/5
. Vous pouvez supposer que l'entrée sera positive.
La décimale répétée sera donnée dans ce format:
5.3.87
avec tout après le deuxième point répété, comme ceci:
5.3878787878787...
Votre programme affichera deux entiers représentant le numérateur et le dénominateur, séparés par une barre oblique (ou la forme équivalente dans votre langue si vous ne produisez pas de texte brut):
889/165
Notez que les décimales terminales n'auront rien après le deuxième point, et les décimales sans partie décimale non répétitive n'auront rien entre les deux points.
Cas de test
Ces cas de test couvrent tous les cas de coin requis:
0..3 = 1/3
0.0.3 = 1/30
0.00.3 = 1/300
0.6875. = 11/16
1.8. = 9/5
2.. = 2/1
5..09 = 56/11
0.1.6 = 1/6
2..142857 = 15/7
0.01041.6 = 1/96
0.2.283950617 = 37/162
0.000000.1 = 1/9000000
0..9 = 1/1
0.0.9 = 1/10
0.24.9 = 1/4
Si vous le souhaitez, vous pouvez également supposer que les fractions sans parties entières n'ont rien à gauche du premier point. Vous pouvez tester cela avec ces cas de test facultatifs:
.25. = 1/4
.1.6 = 1/6
..09 = 1/11
.. = 0/1
(in lowest terms)
c'est-à-dire que la fraction doit être simplifiée.
13
au lieu de 13/1
?
1.9999...
et sorties2/1
1.9999.
est 19999/10000
, pour obtenir 2/1
ce dont vous avez besoin 1..9
, n'est-ce pas?
9/99
?