Неделя была посвящена алгоритмам на строках.

Количество слов

   Алгоритм решения задачи очень прост, поэтому опишем его словесно-формально: к прочитанной строке приклеим сзади пробел. Начиная с второго символа и до предпоследнего (последний мы приклеили и он в исходную строку не входил) будем искать пары, где текущий символ не пробел, а последующий – пробел. Это и есть признак конца слова. Для критического случая – наличие тире в предложении достаточно в условие проверки добавить «И ТЕКУЩИЙ НЕ ТИРЕ».

Слово чемпион

   Так как предложение только одно, то из него можно исключить все знаки препинания, заменив их, например, на пробелы, используя алгоритм, аналогичный используемому в предыдущей задаче. Главное – не заменить дефис. Но этот случай обрабатывается параллельно с тире, так как при замене тире мы проверяем не один символ, а пару. Далее можно повторно обработать строку и считать слова, проверять их на палиндромность и, в случае необходимости, делать соответствующие присвоения. Впрочем, на палиндромность можно проверять и сразу за один проход исходной строки.

Предложение чемпион

   Обратно же – чисто техническая задача. Способы решения уже подсказаны выше. Окончания предложений (троеточие, 2 или 3 восклицательных знака и т.д.) можно заменить одним символом, например, таким # , а все остальные знаки препинания (кроме дефисов) просто удалить. После этого к решению предыдущей задачи просто прибавляется один внешний цикл для обработки каждого предложения.