Матч
332, Статистика текста (TextStatistics)
Дивизион 2,
Уровень 1
В заданном тексте найти среднюю
длину слова. Слова состоят из прописных и заглавных букв латинского алфавита.
Слова могут разделяться цифрами, пробелами и символами пунктуации. Средняя длина
слова равна суммарной длине слов в тексте, разделенной на количество слов.
Класс: TextStatistics
Метод: double averageLength(string text)
Ограничения: text содержит
от 1 до 50 символов, словом является последовательность из рядом стоящих букв
‘a’-‘z’, ‘A’-‘Z’.
Вход. Строка символов text.
Выход. Средняя длина слова в тексте.
Пример входа
text |
“This is div2 easy problem.” |
“Hello, world!” |
“” |
Пример выхода
4.0
5.0
0.0
РЕШЕНИЕ
обработка текста
Читаем текст и подсчитываем общее
количество букв латинского алфавита и слов в нем. Буква является началом слова,
если предыдущий символ не является буквой. Затем общее число букв делим на
количество слов. Отдельно обрабатываем первый символ входного текста.
ПРОГРАММА
#include <cstdio>
#include <cctype>
#include <string>
using namespace std;
class TextStatistics
{
public:
double averageLength(string text)
{
int i, len, words;
len = words = 0;
if (isalpha(text[0])) len++, words++;
for(i = 1; i < text.size(); i++)
{
if (isalpha(text[i])) len++;
if (isalpha(text[i]) &&
(!isalpha(text[i-1]))) words++;
}
if (!words) return
0.0;
return 1.0 * len / words;
}
};