![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
invoke |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Санек Репутация: ![]() ![]() ![]() |
я только не давно начал изучать visual с++ и уменя не получилось перевести алгоритм....
![]() ![]() а вот сам алгоритм Реализуем указанный алгоритм на языке ObjectPascal. Прежде всего следует определить тип данных «таблица смещений». Для кодовой таблицы, состоящей из 256 символов, определение этого типа будет выглядеть так: type TBMTable = array [0..255] of Integer; Далее приводится процедура, вычисляющая таблицу смещений для образца P. procedure MakeBMTable( var BMT : TBMTable; const P : String); var i : Integer; begin 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;end; Теперь напишем функцию, осуществляющую поиск. function BMSearch( StartPos : Integer; const S, P : String; const BMT : TBMTable) : Integer; var Pos, lp, i : Integer; begin lp := Length(P); Pos := StartPos + lp –1; while Pos < Length(S) do if P[lp] <> S[Pos] then Pos := Pos + BMT[S[Pos]] else for i := lp - 1 downto 1 do if P[i] <> S[Pos – lp + i] then begin Inc(Pos); Break; end else if i = 1 then begin Result := Pos – lp + 1; Exit; end; Result := 0; end; заранее спасибо..... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 18:53 |