[Buổi 30][Template & ngoại lệ][HW] Bài 4: Phân tích token số dương có báo lỗi


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Phân tích token số dương có báo lỗi

Bối cảnh

Một dòng chứa n token cần parse thành số nguyên dương. Token hợp lệ nếu chỉ gồm chữ số, giá trị trong [1,10^9]. Hàm parsePositive(token) ném invalid_argument nếu sai format và out_of_range nếu giá trị bằng0 hoặc vượt10^9. Hệ thống phải tiếp tục sau lỗi, tính validCount, invalidCount, tổng và max của các giá trị hợp lệ.

Bài Medium rèn tách validation/parsing khỏi loop aggregate và catch nhiều loại exception. Không dùng stoi như một hộp đen bỏ qua phần dư; toàn token phải hợp lệ.

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. Hàm parsePositive(string).
  2. Hai loại exception theo contract.
  3. Tiếp tục xử lý mọi token.
  4. In valid invalid sum max; nếu valid0, max NONE.

Input

Dòng 1 n; sau đó n token.

Output

Một dòng summary.

Ràng buộc

1≤n≤5000, token dài≤30.

Ví dụ 1

Input

6
10 0 12x 999 1000000001 5

Output

3 3 1014 999

Giải thích

Token hợp lệ là10,999,5; token0 out_of_range, 12x invalid format, 1000000001 out_of_range. valid3 invalid3, sum1014, max999, nên output 3 3 1014 999.

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

4
1 2 3 4

Output

4 0 10 4

Giải thích

Bốn token1,2,3,4 đều hợp lệ; valid4 invalid0, sum10, max4. Không exception nào xảy ra.

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ó: Medium
  • Concepts: exception, parsing string, validation, aggregation, try catch
  • 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