![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогите пож написать программу на Delphi, которая считывала txt файл и считала словарный запас - считала кол-во всех слов из файла, те слова которые повторяются считала за одно.
Я находил проги которые считаю слова, но как сделать чтоб повторяющиеся считала за одно не знаю( Если поможет - вот прога считает просто кол-во слов. Тока через мемо( Код:
procedure TForm1.Button1Click(Sender: TObject);
const
//Множество разделителей.
D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
S : String;
i, Len, LenW, Cnt : Integer;
begin
S := Memo1.Text;
Len := Length(S);
LenW := 0;
Cnt := 0;
//Перебор символов строки слева - направо.
for i := 1 to Len do begin
//Пропускаем разделители.
if S[i] in D then Continue;
//Очередной символ учитываем в длине слова.
Inc(LenW);
//Отслеживаем конец слова.
if (i = Len) or (S[i + 1] in D) then begin
//Подсчёт общего количества слов.
Inc(Cnt);
//Сброс длины слова.
LenW := 0;
end;
end;
//Ответ:
ShowMessage('Словарный запас: ' + IntToStr(Cnt));
end;
end.Последний раз редактировалось Admin, 27.11.2012 в 21:10. |
|
#2
|
||||
|
||||
|
Тебе надо частоты слов чтоли посчитать?
|
|
#3
|
||||
|
||||
|
Подсчёт уникальных слов в тексте:
Код:
function WtN(ds: string): integer; const D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13]; var i,b: integer; Tmp: TStringList; str: string; flg: boolean; begin Tmp:= TStringList.Create; str:= ''; for i := 1 to Length(ds) do begin if ds[i] in D then Continue else str:= str + ds[i]; if (i = Length(ds)) or (ds[i + 1] in D) then begin flg:= true; for b := 0 to Tmp.Count - 1 do if Tmp.Strings[b] = str then flg:= false; if flg then Tmp.Add(str); str:=''; end; end; Result:= Tmp.Count; Tmp.Free; end; Последний раз редактировалось Alegun, 28.11.2012 в 08:23. |