• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужно написать принцип работы данной программы

  • Автор темы Автор темы juicy
  • Дата начала Дата начала

juicy

Ученик
Регистрация
24 Июл 2011
Сообщения
1
Реакции
0
Баллы
0
Нужно написать принцип работы данной программы

Код:
PROGRAM Boyer_Moore_2; 
{ Алгоритм Бойера-Мура для определения  вхождения подслова P в слово S } 
var Wrd1,Wrd2: String[255]; 
j,i,k,i0: Integer; 
d : Array['a'..'z'] of Integer; 
S : Array[0..255] of Char; 
P : Array[0..255] of Char; 
N,M : Integer; ch : Char; 
BEGIN 
        Write('Введите основное слово: '); 
        ReadLn(Wrd1); 
        Write('Введите слово для поиска: '); 
        Read(Wrd2); 
        n:=Length(Wrd1); 
        m:=Length(Wrd2); 
        For j:=0 to n-1 do S[j]:=Wrd1[j+1]; 
        For j:=0 to m-1 do P[j]:=Wrd2[j+1]; 
        { ------------------------------- } 
        For ch:='a' to 'z' do d[ch]:=m; 
        For j:=0 to m-2 do d[P[j]]:=m-j-1; 
        i:=m; 
        i0:=0; 
        Repeat 
                While i0<i do 
                begin 
                        Write(S[i0]); 
                        i0:=i0+1 
                end; 
                j:=m; 
                k:=i; 
                Repeat 
                        k:=k-1; 
                        j:=j-1 
                until (j<=0) OR (P[j]<>S[k]); 
                i:=i+d[S[i-1]] 
        until ((j<=0) OR (i>N)) AND ((i>n) OR (P[j]=S[k])); 
        WriteLn; 
        If (j=0) AND (S[k]=P[j]) then WriteLn('Подслово найдено.') else WriteLn('Подслово не найдено.') 
END.




[MOD2]Вообще-то, сначала принято здороваться. И хотя бы вежливо попросить. А то- "нужно!"- и всё...[/MOD2]
 
Назад
Сверху