Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Phân số rút gọn với equals và compareTo

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 5: Lập trình hướng đối tượng (1): lớp và đối tượng — khóa Lập trình Java

    Xây dựng lớp Fraction biểu diễn phân số tử/mẫu. Phân số luôn được rút gọn ngay khi tạo (chia cả tử và mẫu cho ƯCLN), và dấu âm luôn nằm ở tử số (mẫu số luôn dương).

    1. Lớp Fraction gồm int num, den (private), constructor Fraction(num, den) tự động rút gọn và đẩy dấu âm về tử.
    2. Phương thức add(Fraction o), sub(Fraction o), mul(Fraction o) trả về Fraction mới đã rút gọn.
    3. boolean equals(Fraction o) trả về true khi hai phân số cùng giá trị.
    4. int compareTo(Fraction o) trả về -1, 0, 1.
    5. String toString() trả về "num/den". Nếu den = 1 thì chỉ in num.
    6. Trong main, đọc một biểu thức gồm 2 phân số và một phép toán: <a> <b> <c> <d> <op> (op ∈ {+, -, *, =, <}). In:
      • Nếu op là +, -, *: in kết quả Fraction.toString().
      • Nếu op là =: in true hoặc false.
      • Nếu op là <: in LESS, EQUAL, GREATER.
    7. Dòng 1 input là Q (số truy vấn). Mỗi dòng tiếp là một truy vấn.
    • Định dạng đầu vào:
      • Dòng 1: Q (1 ≤ Q ≤ 100)
      • Q dòng tiếp: <a> <b> <c> <d> <op> với op ∈ {+, -, *, =, <}
    • Ràng buộc đầu vào:
      • |a|, |c| ≤ 10⁴; 1 ≤ b, d ≤ 10⁴
    • Định dạng đầu ra:

      Mỗi truy vấn 1 dòng theo quy tắc trên.

    Ví dụ:

    Đầu vào:

    4
    1 2 1 3 +
    2 4 1 2 =
    3 4 1 2 -
    1 3 2 5 <
    

    Đầu ra:

    5/6
    true
    1/4
    LESS
    

    Giải thích:

    1/2 + 1/3 = 5/6. 2/4 rút gọn = 1/2 nên = 1/2 → true. 3/4 - 1/2 = 1/4. 1/3 ≈ 0.333 < 2/5 = 0.4 → LESS.

    Đầu vào:

    3
    2 3 2 3 *
    6 8 3 4 =
    -1 2 1 2 +
    

    Đầu ra:

    4/9
    true
    0
    

    Giải thích:

    2/3 × 2/3 = 4/9. 6/8 = 3/4 nên = 3/4 → true. -1/2 + 1/2 = 0/1 → '0'.

    Đầu vào:

    1
    0 5 0 7 =
    

    Đầu ra:

    true
    

    Đầu vào:

    2
    3 1 2 1 +
    5 1 5 1 =
    

    Đầu ra:

    5
    true
    

    Đầu vào:

    3
    -3 4 1 2 <
    1 2 -1 2 <
    1 2 1 2 <
    

    Đầu ra:

    LESS
    GREATER
    EQUAL
    

    Chủ đề

    🧩 Lập trình hướng đối tượng☕ JavaJavaJava: OOPTất cả môn học

    Đang tải editor...