Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Подсчет уникальных слов в массиве..............   Найти похожие ветки 

 
valerchik   (2002-11-22 22:11) [0]

Помогите подсчитать сколько раз повторялось слово в тексте...
Вывод должен быть примерно такой (желательно запихать это все в два массива):
Слова число
--------------------
программер 5
Комп 10
процессор 123
--------------------


 
Оливейра   (2002-11-23 00:10) [1]

Для этого ищи реализацию hash под Delphi, либо тупо юзай TStringList (Strings, Values, Objects или чего там еще...)


 
Vlad1   (2002-11-24 14:08) [2]

Я использую такую функцию:
var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.CountWord(YourWord, YourText: String): integer;
var ss,i:integer;
begin
result:=0;
if (yourtext="")or(YourWord ="") then exit;
ss:=0;
YourWord:=#32+YourWord+#32;
YourText:=#32+YourText+#32;
repeat
for i :=1 to ss do
YourText[i]:=#0;
i:=pos(YourWord,YourText);
if i>0 then
inc(Result);
ss:=i+2;
until i=0
end;


Вот примеры её ислользования:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(CountWord(Edit2.Text,Edit1.Text));
end;

procedure TForm1.Button2Click(Sender: TObject);
var T:String;i:integer;
begin
t:=memo1.Text;
for i:=1 to length(t) do
if t[i] in [#13,#10] then t[i]:=#32;
Edit3.Text:=IntToStr(CountWord(Edit2.Text,T));
end;
В YourText сколько угодно пробелов, а в YourWord пробелов быть не должно.



 
Vlad1   (2002-11-24 20:47) [3]

Добавление: в самое начало функции CountWord можно вставить следующее:

YourWord:=Trim(YourWord);


 
Vlad1   (2002-11-27 20:40) [4]

Более красивый вариант:
function CountWord( YourWord:String; YourText: String): integer;
var l:integer;
procedure Q1(w,t:string;var r:integer);
begin
if t="" then exit;
if pos(w,t)>0 then inc(r);
t:=copy(t,pos(w,t)+2,l);
q1(w,t,r);
end;
begin
l:=length(YourText);
Result:=0;
YourWord:=trim(YourWord);
if (Length(YourText)=0)or(trim(YourWord)="" )then exit;
YourWord:=#32+YourWord+#32;
YourText:=#32+YourText+#32;

Q1(YourWord,YourText,Result);
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
3-27808
Mic_2000
2002-11-22 11:10
2002.12.09
Как в Table можно вывести уникальные записи?


14-28267
VEG
2002-11-18 20:47
2002.12.09
Наш любимый чат...


1-28068
neodiX
2002-11-27 14:37
2002.12.09
Потоки - возможно ли?


1-28044
AlexandrN
2002-11-30 16:01
2002.12.09
PageControl


6-28176
Olorin
2002-10-15 10:59
2002.12.09
редиректор с порта на порт...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский