คำอธิบายปัญหา
รับตัวเศษ (Numerator) และตัวส่วน (Denominator) จากผู้ใช้ แล้วแสดงผลลัพธ์การหารในรูปสตริง ถ้ามีทศนิยมซ้ำ ให้ล้อมด้วยวงเล็บ เช่น 1/3 = 0.(3), 5/9 = 0.(5)
ตัวอย่าง
- 4/5 = 0.8
- 5/9 = 0.(5)
- 3/2 = 1.5
- 4/7 = 0.(571428)
อัลกอริทึม
- จัดการเครื่องหมายลบ
- คำนวณส่วนจำนวนเต็ม (integer part)
- สำหรับเศษ: คูณ 10 หารตัวส่วน ได้เลขหลักทศนิยม
- เก็บเศษที่เคยเจอไว้ ถ้าเจอเศษเดิม → พบรอบซ้ำ
- จัดรูปแบบสตริง ใส่วงเล็บครอบส่วนที่ซ้ำ
โค้ดตัวอย่าง (สรุป)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char* fractionToDecimal(int numerator, int denominator) {
// จัดสรรหน่วยความจำไดนามิกสำหรับผลลัพธ์
// ตรวจจับรอบซ้ำด้วยอาร์เรย์เก็บเศษ
// สร้างสตริงผลลัพธ์พร้อมวงเล็บสำหรับทศนิยมซ้ำ
// (โค้ดเต็มอยู่ในต้นฉบับ)
}
int main() {
int n, d;
printf("Enter numerator and denominator: ");
scanf("%d%d", &n, &d);
printf("Result: %s\n", fractionToDecimal(n, d));
return 0;
}
ผลลัพธ์
4/5 = 0.8 5/9 = 0.(5)