Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Loại bỏ chú thích, bảo toàn chuỗi và số dòng

    Cho mã nguồn gồm nnn dòng của một ngôn ngữ mini hỗ trợ:

    • Chú thích dòng: bắt đầu bằng //, kéo dài đến hết dòng vật lý hiện tại.
    • Chú thích khối: bắt đầu bằng /*, kết thúc ở */ đầu tiên gặp phải (có thể trải dài qua nhiều dòng).
    • Chuỗi ký tự (string literal): bắt đầu và kết thúc bằng dấu nháy kép ", không hỗ trợ ký tự thoát — bên trong chuỗi, ký tự " tiếp theo luôn kết thúc chuỗi ngay lập tức. Một chuỗi không kéo dài qua dòng: nếu gặp cuối dòng mà chưa gặp " đóng, chuỗi coi như tự kết thúc tại đó.

    Bên trong một chuỗi ký tự, các ký tự // hoặc /* không được coi là bắt đầu chú thích (được giữ nguyên).

    Yêu cầu: loại bỏ toàn bộ nội dung chú thích khỏi mã nguồn (không chèn khoảng trắng thay thế), nhưng phải giữ nguyên số dòng của mã nguồn — các ký tự xuống dòng nằm bên trong một chú thích khối vẫn phải được giữ lại.

    Ví dụ: Input 5 dòng:

    int x = 1; // gan gia tri
    /* day la
    comment nhieu dong */ int y = 2;
    string s = "http://neu.edu.vn"; // link
    /* end */
    

    Output 5 dòng (dòng 2 và dòng 5 trở thành rỗng):

    int x = 1;
    
     int y = 2;
    string s = "http://neu.edu.vn";
    
    
    • Định dạng đầu vào:

      Dòng đầu là số nguyên nnn (0≤n≤5000 \le n \le 5000≤n≤500). nnn dòng tiếp theo là mã nguồn (mỗi dòng độ dài không quá 200 ký tự).

    • Định dạng đầu ra:

      In ra đúng nnn dòng là mã nguồn sau khi đã loại bỏ chú thích, giữ nguyên mọi ký tự khác (kể cả khoảng trắng) không thuộc phần bị loại bỏ.

    Ví dụ:

    Đầu vào:

    5
    int x = 1; // gan gia tri
    /* day la
    comment nhieu dong */ int y = 2;
    string s = "http://neu.edu.vn"; // link
    /* end */
    

    Đầu ra:

    int x = 1; 
    
     int y = 2;
    string s = "http://neu.edu.vn"; 
    
    

    Đầu vào:

    0
    

    Đầu ra:

    
    

    Đang tải editor...