[Buổi 26][Vòng đời & operator][HW] Bài 4: Money Addition
Money Addition
Bối cảnh
Money lưu tổng cents dưới dạng số nguyên để tránh sai số số thực. Constructor nhận dollars,cents và chuẩn hóa về totalCents; operator+ cộng hai object rồi trả một Money mới. Bài Easy luyện constructor giữ representation nhất quán và operator tạo kết quả mà không làm thay đổi hai toán hạng.
Ở 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 Money private totalCents.
- Constructor(dollars,cents).
- operator+.
- In
dollars centsvới cents 0..99.
Input
Bốn số không âm d1 c1 d2 c2.
Output
Hai số.
Ràng buộc
0≤d,c≤1e9.
Ví dụ 1
Input
1 50 2 75
Output
4 25
Giải thích
Money1=150 cents, Money2=275 cents, tổng425 cents = 4 dollars25 cents. Output 4 25.
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
0 0 0 0
Output
0 0
Giải thích
Hai object đều0 nên operator+ trả tổng0, biểu diễn 0 0.
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+, normalization, integer money
- Giới hạn kiến thức: B01-B26
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments