[Buổi 30][Template & ngoại lệ][Lab] Bài 1: Generic Clamp
Generic Clamp
Bối cảnh
Một hàm clamp có cùng logic cho int và double.
Hãy viết function template thay vì duplicate hai hàm.
Yêu cầu
- Viết
template<typename T> T clampValue(T x,T lo,T hi). - Đọc type I/D và ba giá trị.
- In kết quả; double in 2 decimals.
Yêu cầu tổ chức code
Phải dùng function template.
Online Judge chấm output. Với bài nhạy về cấu trúc OOP, giảng viên review thêm source code để xác nhận học viên luyện đúng kỹ năng.
Input
I x lo hi hoặc D x lo hi.
Output
Một giá trị.
Ràng buộc
lo≤hi.
Ví dụ 1
Input
I 5 0 10
Output
5
Giải thích
Template clampValue<T> được instantiate với int. x=5 nằm trong [0,10] nên không cần thay đổi và trả5. Output 5 xác nhận cùng một generic function có thể thực hiện logic so sánh mà không biết trước giá trị cụ thể.
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 -1 0 10
Output
0
Giải thích
x=-1 nhỏ hơn low=0, vì vậy generic clamp trả low. Với type int, kết quả là0. Ví dụ kiểm tra nhánh dưới của cùng template function.
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: LAB
- Độ khó: Easy
- Concepts: function template, generic programming, comparisons
- Giới hạn kiến thức: B01-B30
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments