494. Детская считалочка
Для каждой входной строки подсчитать количество слов в ней. Словом
называется последовательность подряд идущих букв латинского алфавита (больших и
маленьких).
Вход. Состоит из набора строк, каждая из которых содержит
несколько слов (как минимум одно).
Выход. Для
каждой входной строки вывести количество слов в ней.
Meep Meep!
I tot I taw a putty tat.
I did! I did! I did taw a putty tat.
Shsssssssssh ... I am hunting wabbits. Heh Heh Heh Heh ...
2
7
10
9
обработка текста
Читаем последовательно
буквы текста. Пусть c – текущий
прочитанный символ, а ch – предыдущий символ. С
символа c начинается новое слово, если c – буква латинского алфавита, а ch – нет. Для каждой строки достаточно подсчитать число
таких букв, с которых начинается новое слово.
Первая строка содержит два слова: Meep, Meep. Четвертая строка содержит 9 слов: Shsssssssssh, I, am, hunting, wabbits, Heh, Heh, Heh, Heh.
В переменной res будем
подсчитывать число слов в текущей строке. Изначально установим значение
предыдущего символа ch равным 0. Читаем символы из входного потока, пока
не достигнем конца файла.
res = ch = 0;
while(scanf("%c",&c)
== 1)
{
Если встретился символ
перехода на новую строку, то выводим количество слов res в обработанной
строке и обнуляем его.
if (c == '\n')
{
printf("%d\n",res);
res = 0;
}
Проверяем, начинается ли с
символа c новое слово. Функция isalpha(c) возвращает истину, если
c – буква латинского алфавита (большая или маленькая), определена в
<ctype.h>.
if (isalpha(c) && !isalpha(ch)) res++;
После обработки текущий
символ становится предыдущим.
ch = c;
}