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


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

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

  1. Template minMax(a,b) trả pair<T,T> {min,max}.
  2. Đọc type I/D.
  3. 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

There are no comments at the moment.

Zalo