[Buổi 30][Template & ngoại lệ][HW] Bài 1: Generic MinMax
Generic MinMax
Bối cảnh
Cần một hàm template minmax2(a,b) dùng được cho nhiều kiểu có toán tử so sánh, trả cặp (min,max). Homework Easy tập trung cú pháp generic và type inference; thuật toán cố ý rất đơn giản để người học nhận ra cùng một implementation không cần copy thành phiên bản int/double/string.
Input hiện tại kiểm tra kiểu theo tag của đề; output giữ quy tắc format tương ứng.
B30 kết hợp hai ý tưởng: generic code để tránh copy thuật toán theo kiểu dữ liệu và exception để tách luồng lỗi khỏi luồng thành công. Exception chỉ nên xuất hiện ở điểm precondition/validation thất bại; state hoặc aggregate không được cập nhật trước khi biết thao tác đã hợp lệ. Với template, hãy xác định rõ các toán tử/operation mà type T cần hỗ trợ.
Yêu cầu
- Template
minMax(a,b)trả pair<T,T> {min,max}. - Đọc type I/D.
- Double in 2 decimals.
Input
I a b hoặc D a b.
Output
min max.
Ràng buộc
Giá trị hợp lệ trong type.
Ví dụ 1
Input
I 1 2
Output
1 2
Giải thích
Với int 1 và2, 1<2 nên pair trả (1,2). Output in 1 2 theo thứ tự min trước max.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Ví dụ 2
Input
I 2 1
Output
1 2
Giải thích
Với input2,1, template nhận cùng type int nhưng nhánh so sánh đảo lại và vẫn trả min1 max2. Output tiếp tục 1 2.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Thông tin học tập
- Module: M08
- Buổi: B30
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: function template, pair result, generic comparison
- Giới hạn kiến thức: B01-B30
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments