[Buổi 26][Vòng đời & operator][HW] Bài 2: Point Equality
Point Equality
Bối cảnh
Hai Point object được xem là bằng nhau khi cả hai tọa độ x,y cùng bằng. Bài Easy luyện overload operator== để main có thể viết p1 == p2 theo đúng semantics tự nhiên của domain. Constructor nhận x,y và object giữ state; operator chỉ đọc, không thay đổi bất kỳ point nào.
Ở B26, constructor/operator/destructor phải được xem như một phần của semantics object chứ không chỉ là cú pháp. Constructor nên đưa object về representation chuẩn ngay từ đầu; operator đọc các object hợp lệ và trả kết quả có cùng invariant; destructor chỉ giải phóng tài nguyên thuộc ownership của chính object.
Yêu cầu
- Class Point với x,y.
- Parameterized constructor.
- operator==.
- Đọc hai point và in SAME/DIFFERENT.
Input
Bốn số nguyên.
Output
Một từ.
Ràng buộc
|coord|≤1e9.
Ví dụ 1
Input
1 2 1 2
Output
SAME
Giải thích
Hai point đều (1,2), cả x và y khớp nên operator== true, output SAME.
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
1 2 2 1
Output
DIFFERENT
Giải thích
(1,2) và (2,1) có cùng tập số nhưng tọa độ tương ứng khác nhau, nên operator== false, output DIFFERENT.
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: HOMEWORK
- Độ khó: Easy
- Concepts: constructor, operator==, object semantics
- Giới hạn kiến thức: B01-B26
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments