[Buổi 21][Xử lý chuỗi][HW] Bài 3: Kiểm tra record 4 trường
Kiểm tra record 4 trường
Bối cảnh
Một hệ thống nhận record dạng id|name|score|status. Dấu | là delimiter và field không được để trống sau khi trim khoảng trắng. Luật:
id: chỉ gồm chữ số.name: chuẩn hóa khoảng trắng giữa các từ về một space.score: số nguyên từ 0 đến 100, chỉ gồm chữ số.status: chuyển uppercase và phải làPASShoặcFAIL.
Nếu record không có đúng 4 field hoặc vi phạm bất kỳ luật nào, in INVALID; nếu hợp lệ, in canonical record id|name|score|STATUS. Bài Medium yêu cầu parser delimiter tùy chỉnh, validation trước transform và không được phụ thuộc vào stringstream whitespace để tách field vì name có thể chứa space.
Một record có thể có name chứa nhiều space, vì vậy delimiter cấu trúc và whitespace nội bộ phải được xử lý ở hai tầng khác nhau. Tách field theo | trước, sau đó mới trim/normalize từng field. Nếu normalize toàn dòng trước khi split, bạn có thể vô tình thay đổi dữ liệu hoặc che mất field rỗng ở hai bên delimiter.
Yêu cầu
- Đọc một dòng record.
- Tách thủ công theo
|thành đúng 4 field. - Trim từng field và validate.
- Normalize name, uppercase status.
- In canonical hoặc INVALID.
Input
Một dòng record.
Output
INVALID hoặc record canonical.
Ràng buộc
|line|≤1000.
Ví dụ 1
Input
001 | Nguyen Van A | 85 | pass
Output
001|Nguyen Van A|85|PASS
Giải thích
Record được tách thành bốn field. Sau trim: id=001, name=Nguyen Van A, score=85, status=pass. ID và score đều là digits; score nằm trong 0..100. Name được gom space thành Nguyen Van A, status uppercase thành PASS. Vì hợp lệ, output 001|Nguyen Van A|85|PASS.
Ví dụ 2
Input
12|Bob|101|PASS
Output
INVALID
Giải thích
Record 12|Bob|101|PASS có đúng bốn field và ID hợp lệ. Score 101 cũng chỉ gồm chữ số, nhưng sau parse giá trị số vượt giới hạn 100 của specification. Validation dừng tại rule score; record không được canonical hóa hay xuất một phần kết quả nào, vì vậy output là INVALID.
Thông tin học tập
- Module: M06
- Buổi: B21
- Loại bài: HOMEWORK
- Độ khó: Medium
- Concepts: custom delimiter parsing, string validation, field normalization, numeric parse
- Giới hạn kiến thức: B01-B21
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments