Thắc mắc về kiểu bài có yêu cầu nhập một số chưa xác định các dòng input

Em gặp phải một số bài dạng như sau:

Tức đề bài yêu cầu nhận đầu vào là “một số” dòng lệnh, sau đó in ra kết quả. Vấn đề là em không biết cái “sau đó” là bao giờ, bao giờ thì dừng nhận input?
Thường thì em sẽ code là

string s;
while (cin >> s) {
//do something with s
...
}

Khi test trên IDE thì sẽ bị yêu cầu nhập VÔ HẠN, nhưng khi submit lên online judge thì lại chạy được.
Em thắc mắc là online judge họ tạo test case cho dạng bài này như thế nào, làm sao để tự thực hiện trên IDE?

Mình nghĩ là online judge nó chỉ cần nhận được output đúng với test case là được. Sau đó tự động đóng chương trình đang chạy lại rồi lại mở lại chương trình đó rồi nhập test key tiếp theo. Giống như việc bạn đóng chương trình được biên dịch từ file code của bạn, dù nó vẫn yêu cầu nhập tiếp nhưng bạn vẫn có thể đóng bằng cách nhấn vào dấu “x”.

cincout được dẫn ra file (stream redirection) thay vì bàn phím, ví dụ:

/usr/bin$ example < input > output

https://www.baeldung.com/linux/stream-redirections (Windows cũng tương tự)

Khi hết file input thì stream cũng báo hết, toán tử đọc trả về bad stream, bad stream ép về 0 ngắt vòng lặp.

5 Likes

Nhập xong thì thì bạn nhấn Ctrl+D (unix) là eof

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?