Задача 2. Текст.
Разочарованный результатами его последнего конкурса, Дима бросил программирование и сосредоточился исключительно на кропотливой работе, но с участием меньше интеллектуальных усилий. На этот раз, он получает текст и должен вычислить среднюю длину слов текста, слово определяется как непрерывная последовательность символов английского алфавита ('a' .. 'z' , 'A' .. 'Z'). Определим среднюю длину = (общая длина слов текста) / (число слов текста).
Задание:
Написать программу, которая решит эту проблему Димы.
Входные данные
В первой строке входного файла text.in содержится данный текст.
Вывод данных
Выходной файл text.out будет содержать в первой строке целое число, которое представляет среднюю длину слов по всему тексту.
Ограничения:
- размер входного файла не превосходит 1 Мб
- Входной файл будет содержать только прописные и строчные буквы, цифры, пробелы и символы (т.е. не содержат специальные символы)
Answers & Comments
Verified answer
//Pascal ABC.NET v3.0 сборка 1111type
ty=set of char;
Const
t:ty=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
Var
f:text;
s:string;
i,slo,ks:integer;
k:real;
begin
assign(f,'text.in');
reset(f);
while not Eof(f) do read(f,s);
close(f);
slo:=0;
ks:=0;
for i:=1 to length(s) do
if s[i] in t then inc(slo) else
begin;
k:=k+slo;
inc(ks);
slo:=0;
end;
if s[length(s)] in t then
begin;
inc(ks);
k:=k+slo;
end;
k:=k/ks;
assign(f,'text.out');
rewrite(f);
write(f,k);
close(f);
end.
Пример ввода(text.in):
SIMPLE text
Пример вывода(text.out):
5