[Buổi 30][Template & ngoại lệ][Lab] Bài 1: Generic Clamp


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

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

  1. Viết template<typename T> T clampValue(T x,T lo,T hi).
  2. Đọc type I/D và ba giá trị.
  3. 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

There are no comments at the moment.

Zalo