Главная страница
    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.01 c
4-6867
AlexanderSK
2003-02-06 15:39
2003.04.03
Путь к DLL?


4-6864
Zelius
2003-02-05 22:07
2003.04.03
Как комбобоксу установить размер выпадающего списка?


4-6869
Nic2
2003-02-06 15:36
2003.04.03
Сообщения


1-6578
misterix
2003-03-20 14:25
2003.04.03
Свойство Parent у формы, расположенной в DLL


1-6594
Артём К.
2003-03-22 08:14
2003.04.03
Как заставить ListBox не прорисовывать уже созданные эл-ты





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