คำถามนี้ไม่จำเป็นต้องใช้กับการยกเลิกทศนิยม - ทศนิยมซ้ำยังสามารถแปลงเป็นเศษส่วนผ่านอัลกอริทึม
งานของคุณคือการสร้างโปรแกรมที่ใช้ทศนิยมซ้ำเป็นอินพุตและส่งออกตัวเศษและส่วนที่เกี่ยวข้อง (ในเงื่อนไขต่ำสุด) ที่สร้างการขยายทศนิยม เศษส่วนมากกว่า 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
?