|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Словарный запас delphi
Помогите пож написать программу на 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
|
||||
|
||||
Тебе надо частоты слов чтоли посчитать?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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. |