Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2012, 14:45   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию добавить к коду нахождение позиции

есть реализация алгоритма Бойера-Мура, но тут выдает только количество вхождений. что нужно еще добавить, чтобы была и позиция подстроки в формате: строчка х позиция у
Код:
function BMSearch(StartPos: Integer; const S, P: String): Integer;
type
TBMTable = array[0..255] of Integer;
var
  Pos, lp, i,kol: Integer;
  BMT: TBMTable;
begin

  kol:=0;
  for i := 0 to 255 do BMT[i] := Length(P);
  for i := Length(P) downto 1 do if BMT[Byte(P[i])] = Length(P) then
  BMT[Byte(P[i])] := Length(P) - i;

  lp := Length(P);
  Pos := StartPos + lp -1;
  while Pos <= Length(S) do
  if P[lp] <> S[Pos] then Pos := Pos + BMT[Byte(S[Pos])] else
  if lp = 1 then
  begin
    inc(kol);
    inc(Pos);
  end else
  for i := lp - 1 downto 1 do
  if P[i] <> S[Pos - lp + i] then
  begin
   Inc(Pos);
  end
  else if i = 1 then
  begin
    inc(kol);
    inc(Pos);
  end;
  {Result}bmsearch := kol;
end;


procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
s,p:string[30];
begin
s:=Memo1.Text;
p:=Edit1.Text;
i := bmsearch(1,s,p);
Memo2.Lines.Add('Количество вхождений '+IntToStr(i));
end;
gylayko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема по коду gr34241as C# (си шарп) 0 05.04.2012 23:41
Выборка по коду stalkerua Microsoft Office Excel 2 22.07.2011 16:17
к элементам первой половины массива добавить минимум, а к элементам второй - добавить максимум specialist Паскаль, Turbo Pascal, PascalABC.NET 3 08.05.2011 01:46
Нахождение позиции V@mpir Общие вопросы Delphi 9 16.10.2009 16:19
Комментарии к коду Ярослав Помощь студентам 4 23.11.2007 16:57