Очень многие участники не знают, что значит "prog < test.txt".
Попробую рассказать об этом замечательном свойстве многих современных операционных систем.
Тем более, что этого требуют задачи нашего конкурса. Странно, что команда
"prog.exe < test.txt" из примера не заставила задуматься тех, кто
прислал программы с нарушением. Интересно, для кого пишется пример.
Во многих операционных системах существует способ перенаправить поток данных их файла
или в файл. Это естественный способ представить любую программу
как функцию в операционной системе y=f(x).
Есть другой взгляд. Программа – это фильтр на потоке данных.
Схематично это выглядит так:
данные x > программа > данные y
Обычно данные x – это то, что набирают с клавиатуры, а данные y – это то,
что программа выдаёт на экран. Символами ‘<’ и ‘>’ можно указать,
что нужно данные брать из файла или записывать файл. Правда,
в операционных системах вначале пишется имя программы, а потом остальное.
Например, можно написать:
myprog <test.txt >res.txt
Это значит, что программа mypog будет получать данные из файла test.txt,
а всё, что она выдаст, запишется в res.txt.
Самое замечательное, что программу менять не нужно. Она пишется, как обычно без файлов,
будто вы читаете с клавиатуры и выдаёте на экран.
Есть маленькая хитрость для Turbo/Borland Pascal.
Очень многие любят написать "Uses CRT". Этого уже достаточно, чтобы работа с
потоками в такой программе отменилась.
Советую почитать команды операционных систем. Попробуйте узнать,
что делает специальный символ ‘|’.