इस प्रश्न को केवल समाप्ति दशमलव तक लागू करने की आवश्यकता नहीं है - दोहराए गए दशमलव को भी एल्गोरिथ्म के माध्यम से भिन्न में परिवर्तित किया जा सकता है।
आपका कार्य एक ऐसा प्रोग्राम बनाना है जो इनपुट के रूप में एक दोहराया दशमलव लेता है, और उस दशमलव विस्तार का उत्पादन करने वाले संबंधित अंश और हर (सबसे कम शब्दों में) को आउटपुट करता है। 1 से अधिक अंशों को अनुचित भिन्नों के रूप में दर्शाया जाना चाहिए 9/5
। आप मान सकते हैं कि इनपुट सकारात्मक होगा।
इस प्रारूप में दोहराया दशमलव दिया जाएगा:
5.3.87
दूसरी डॉट के बाद सब कुछ के साथ दोहराया, इस तरह:
5.3878787878787...
आपका प्रोग्राम दो पूर्णांकों का उत्पादन करेगा जो अंश और भाजक का प्रतिनिधित्व करते हैं, एक स्लैश द्वारा अलग किया जाता है (या यदि आप सादे पाठ का उत्पादन नहीं करते हैं तो आपकी भाषा में समकक्ष रूप):
889/165
ध्यान दें कि दशमलव को समाप्त करने का दूसरा बिंदु के बाद कुछ भी नहीं होगा, और बिना दोहराव वाले दशमलव भाग के साथ दशमलव में दो बिंदुओं के बीच कुछ भी नहीं होगा।
परीक्षण के मामलों
ये परीक्षण मामले आवश्यक कोने के सभी मामलों को कवर करते हैं:
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
यदि आप चाहें, तो आप यह भी मान सकते हैं कि पूर्णांक भागों के बिना अंशों में पहले डॉट के बाईं ओर कुछ भी नहीं है। आप इन वैकल्पिक परीक्षण मामलों के साथ परीक्षण कर सकते हैं:
.25. = 1/4
.1.6 = 1/6
..09 = 1/11
.. = 0/1
(in lowest terms)
यानी अंश को सरलीकृत किया जाना चाहिए।
13
इसके बजाय आउटपुट की अनुमति है 13/1
?
1.9999...
और आउटपुट को संभालना सुनिश्चित करें2/1
1.9999.
है 19999/10000
, 2/1
आप की जरूरत है 1..9
, है ना?
9/99
?