Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-6438
Adolf
2003-03-23 16:16
2003.04.03
Кодировка


3-6389
ava
2003-03-15 13:14
2003.04.03
Формат данных


4-6835
KLOPHN
2003-02-03 03:55
2003.04.03
Как сделать чтоб приложение стартовало вместе с виндой


1-6461
cult
2003-03-24 12:09
2003.04.03
Сохранение контента RichEdit


1-6510
jack128
2003-03-24 14:48
2003.04.03
IniFiles в Win2K