Задача №1667. Текст
Статистика решения: 45,12% участников полностью решили задачу, 18,29% набрали 0 баллов.
Решение задачи:
Эта задача, одна из двух, которая решалась «в лоб» и не содержала подвохов.
1 способ. При решении задачи на Pascal-е можно было использовать тип string, так как максимальная длина строки 255 символов. После считывания очередной строки, необходимо изменить ее следующим образом: каждое найденное «слово» перевернуть на месте. Далее вывести эту строку.
2 способ. Более элегантный подход заключатся в том, что не надо анализировать текст по строкам, можно представить его в виде последовательности символом с переводами кареток. Для переворота «слов», можно использовать концепцию работы стека, накапливая символы в нем.
Здесь до конца файла считывается по одному символу. Если текущий символ латинский, то он является частью слова, поэтому он приписывается в начало строки s. Если символ не латинский, то на данной итерации либо конец «слова», либо просто продолжение текста. В последнем случае необходимо вывести перевернутое слово, очистить строку s, а также вывести только что считанный символ текста, уже не являющимся частью слова.
Комментарии:
Многие школьники не учитывали тот случай, когда в конце файла находиться «слово», но нет перевода каретки. В результате они теряли последнее слово. Было несколько школьников, которые забывали, что латинские буквы бывают заглавными.