[Buổi 26][Vòng đời & operator][WS] Bài 1: Fraction Toolkit


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Fraction Toolkit

Bối cảnh

Xây toolkit phân số nhỏ có constructor giữ invariant và các operator tự nhiên.

Không dùng inheritance/template.

Yêu cầu

  1. Class Fraction normalized.
  2. Command: ADD a b c d, EQ ..., LT ....
  3. ADD in phân số rút gọn; EQ/LT in TRUE/FALSE.
  4. operator+ / == / < phải nằm trong class.

Yêu cầu tổ chức code

Phải overload ít nhất +, ==, <.

Online Judge chấm output. Giảng viên có thể review thêm cấu trúc code để xác nhận học viên luyện đúng kỹ năng OOP của buổi.

Input

Dòng 1 q; q command.

Output

Mỗi command một dòng.

Ràng buộc

1≤q≤1000, denominator !=0.

Ví dụ 1

Input

3
ADD 1 2 1 3
EQ 1 2 2 4
LT 1 3 1 2

Output

5/6
TRUE
TRUE

Giải thích

ADD 1/2 + 1/3 tạo 5/6. EQ 1/22/4 là TRUE sau normalize. LT 1/3 < 1/2 là TRUE theo cross multiplication. Ba command lần lượt cho 5/6, TRUE, TRUE.

Mẫu này đồng thời kiểm tra invariant mà constructor/operator phải giữ. Kết quả không chỉ đúng về giá trị cuối mà còn phải được biểu diễn ở dạng canonical của class; các object nguồn vẫn giữ state riêng nếu phép toán được thiết kế theo value semantics.

Ví dụ 2

Input

2
ADD -1 2 1 2
LT 3 4 2 3

Output

0/1
FALSE

Giải thích

ADD -1/2 + 1/2 bằng0 và normalize thành 0/1. LT 3/4 < 2/3 là false vì 0.75 lớn hơn khoảng0.667. Output 0/1, FALSE.

Mẫu này đồng thời kiểm tra invariant mà constructor/operator phải giữ. Kết quả không chỉ đúng về giá trị cuối mà còn phải được biểu diễn ở dạng canonical của class; các object nguồn vẫn giữ state riêng nếu phép toán được thiết kế theo value semantics.

Thông tin học tập

  • Module: M07
  • Buổi: B26
  • Loại bài: WORKSHOP
  • Độ khó: Medium
  • Concepts: constructors, operator+, operator==, operator<, normalized objects
  • Giới hạn kiến thức: B01-B26
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo