Текущий архив: 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.46 MB
Время: 0.007 c