[Buổi 21][Xử lý chuỗi][HW] Bài 3: Kiểm tra record 4 trường


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

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à PASS hoặc FAIL.

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

  1. Đọc một dòng record.
  2. Tách thủ công theo | thành đúng 4 field.
  3. Trim từng field và validate.
  4. Normalize name, uppercase status.
  5. 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

There are no comments at the moment.

Zalo