Задача 2. Текст. Разочарованный результатами его последнего конкурса, Дима бросил...

0 голосов
28 просмотров

Задача 2. Текст.
Разочарованный результатами его последнего конкурса, Дима бросил программирование и сосредоточился исключительно на кропотливой работе, но с участием меньше интеллектуальных усилий. На этот раз, он получает текст и должен вычислить среднюю длину слов текста, слово определяется как непрерывная последовательность символов английского алфавита ('a' .. 'z' , 'A' .. 'Z'). Определим среднюю длину = (общая длина слов текста) / (число слов текста).
Задание:
Написать программу, которая решит эту проблему Димы.
Входные данные
В первой строке входного файла text.in содержится данный текст.
Вывод данных
Выходной файл text.out будет содержать в первой строке целое число, которое представляет среднюю длину слов по всему тексту.
Ограничения:
- размер входного файла не превосходит 1 Мб
- Входной файл будет содержать только прописные и строчные буквы, цифры, пробелы и символы (т.е. не содержат специальные символы)


Информатика (71 баллов) | 28 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//Pascal ABC.NET v3.0 сборка 1111

type
 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

(38.6k баллов)