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

Вниз

Подсчет слов   Найти похожие ветки 

 
F22   (2003-03-24 12:06) [0]

Здравсвтвуйте мастера, не могли бы вы мне помочь:

Мне нужно сделать функцию для счета слов(wor) в строке(str),
например, строка: "begin beffef beginend end bbbbb begin beg",
а функция считает сколько слов begin встречается в строке, в
данном случае 2 раза.
Функцию, мне нужно сделать примерно по такому шаблону:
(вместо вопросиков надо вставить нужное)
function sears(str:ss;wor:ss):integer;
var k,d:integer;
begin
d:=0;//начальное значение счетчика
if ? then //проверка строки, равной длине слова
begin
?//изменение величины счетчика
sears:=?;//первый результат
exit;
end;
//проверка на соответствие длин слова и строки
?
k:=pos(wor,str);//Определение позиции слова в строке
//Определение количества слов в строке, если длина строки больше, чем длина слова
while k<>0 do
?
end;
end;
sears:=d;
end;
Большое спасибо!!!


 
Palladin   (2003-03-24 12:28) [1]

что это за тип такой ss;

function SubStrCount(p_strSub,p_strStr:string):integer;
var
lc_nPos:integer;
begin
result:=0;
while true do
begin
lc_nPos:=pos(p_strSub,p_strStr);
if lc_nPos=0 then break;
inc(result);
p_strStr:=copy(p_strStr,lc_nPos+length(p_strSub)-1,length(p_strStr));
end;
end;


 
JibSkeart   (2003-03-24 12:31) [2]

По логике можешь сделать так
пока нету пробела
добавляй во временную строку символы темп_стр = темп_стр + стр[i]
иначе (если есть пробел )
добавляешь допустим в StringList->Add(темп _стр);
темп_стп = "";
и енто в цикле
for i = 0 to i = Length(стр) do
...

ну намек думаю понятен
мне просто кажется что лутще
найти отдельные слова а потом уже искать что да как ...




 
Palladin   (2003-03-24 12:45) [3]

тоесть перефразируя на твои названия наверно понятней будет

function SubStrCount(str,wor:string):integer;
var
k:integer;
begin
result:=0;
while true do
begin
k:=pos(str,wor);
if k=0 then break;
inc(result);
str:=copy(str,k+length(wor)-1,length(wor));
end;
end;



 
Palladin   (2003-03-24 12:47) [4]


> k:=pos(str,wor);

k:=pos(wor,str)


 
REA   (2003-03-24 12:47) [5]

PosEx?


 
Palladin   (2003-03-24 12:48) [6]


> REA © (24.03.03 12:47)

что есть PosEx?


 
REA   (2003-03-24 12:56) [7]

Description

PosEx returns the index of SubStr in S, beginning the search at Offset. If Offset is 1 (default), PosEx is equivalent to Pos.

PosEx returns 0 if SubStr is not found, if Offset is greater than the length of S, or if Offset is less than 1.

function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
var
I,X: Integer;
Len, LenSubStr: Integer;
begin
if Offset = 1 then
Result := Pos(SubStr, S)
else
begin
I := Offset;
LenSubStr := Length(SubStr);
Len := Length(S) - LenSubStr + 1;
while I <= Len do
begin
if S[I] = SubStr[1] then
begin
X := 1;
while (X < LenSubStr) and (S[I + X] = SubStr[X + 1]) do
Inc(X);
if (X = LenSubStr) then
begin
Result := I;
exit;
end;
end;
Inc(I);
end;
Result := 0;
end;
end;


 
Palladin   (2003-03-24 13:01) [8]

эта функция же не входит в delphi
по крайней мере у меня в d6 ее нет...

да и для данной задачи достаточно простого pos


 
F22   (2003-03-24 14:34) [9]

Пасибо всем



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
14-6696
Шишкин Илья
2003-03-18 14:52
2003.04.03
Помогите выбрать компонент


6-6651
LeReve
2003-02-09 20:24
2003.04.03
как отправлять сообщения по локальной сети????


14-6789
kostya2000
2003-03-16 23:36
2003.04.03
Отслеживаеться ли сканирование портов!?


14-6769
Юров Владимир
2003-03-17 16:26
2003.04.03
SynEdit vs. Delphi 6


1-6574
Alex-21
2003-03-20 21:29
2003.04.03
TPopupMenu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский