Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C biểu diễn phân số dưới dạng chuỗi (có phần lặp)

Cho tử số và mẫu số, chuyển thành chuỗi thập phân. Nếu phần thập phân vô tận lặp, đặt phần lặp trong ngoặc đơn. Ví dụ: 4/5 = 0.8; 5/9 = 0.(5); 4/7 = 0.(571428).

Giải thuật

  • Xử lý dấu âm, phần nguyên
  • Dùng mảng dec[] lưu dư (remainder) và chữ số thương tương ứng
  • Khi gặp dư lặp lại → đánh dấu vị trí lặp
  • Xây dựng chuỗi kết quả, chèn '(' và ')' tại vị trí lặp
  • Dùng malloc/realloc cho bộ nhớ động

Chương trình

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

char* fractionToDecimal(int numerator, int denominator) {
    // Xử lý dấu, phần nguyên, phần dư
    // Dùng mảng dec[] lưu (remainder, digit) để phát hiện chu kỳ
    // Xây dựng chuỗi kết quả với ngoặc đơn cho phần lặp
    // (Xem mã nguồn đầy đủ trong nội dung gốc)
}

int main(void) {
    int n, d;
    printf("enter numerator1 denominator1: "); scanf("%d%d", &n, &d);
    printf("Fractional part1: %s\n", fractionToDecimal(n, d));
    printf("enter numerator2 denominator2: "); scanf("%d%d", &n, &d);
    printf("Fractional part2: %s\n", fractionToDecimal(n, d));
    return 0;
}

Kết quả

4/5 → 0.8
5/9 → 0.(5)