boloboshenku писал(а):
Нашел ошибку..
Код:
for k:=1 to n do begin
 f:=0;{Обнулять f надо здесь, а не там, где было!}
 for m:=1 to length(a[k]) do begin
    for d:=1 to length(a[k]) do if a[k][m]=a[k][d] then inc(f); end;
    if f>=3 then begin
                  inc(e);
                  b[e]:=a[k];
                 end; end;
Это неправильно. Например, такая программа отберет из текста «tty» слово «tty» (как содержащее три буквы «t»), что, конечно, неверно.
Добавлено спустя 1 час 57 минут 42 секунды:Если модифицировать так, как я указал выше, то программа будет повторять одно и то же (правильно) найденное слово (количество повторений равно количеству совпадающих букв в слове). Так, например, слово «ttttrrr» будет повторено семь раз.
Кстати, по смыслу, возвращаемое функцией GetWords значение переменной n, — это количество слов в тексте, однако на деле значение n на 1 больше, т.е. если ввести текс из одного слова, то GetWords вернет значение n равное 2. При этом первое слово в массиве a — это пустая строка (слово без единого символа). 
Предложенный Вами алгоритм можно подправить путем добавления проверки «m<>d»
Код:
for k:=2 to n do
 begin
  f:=0;
  for m:=1 to length(a[k]) do
    for d:=1 to length(a[k]) do if (m<>d) and (a[k][m]=a[k][d]) then inc(f);
  if f>=3 then begin
                     inc(e);
                     b[e]:=a[k];
                   end;
 end; 
Массив по k, конечно, может начинаться и с 1 — на результат это не повлияет.