Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
#1

Зацикливание в алгоритме Хорспула - C++

23.11.2013, 20:36. Просмотров 181. Ответов 0
Метки нет (Все метки)

есть функция для поиска подстроки в строке по алгоритму Хорпсула
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int searchHorps(char *string,char *substr) {
 
    int sl = strlen(string);
    int ssl = strlen(substr);
    int slide[256];
 
    for(int i = 0; i < 256; ++i) slide[i] = ssl;
    for(int l = 0; l < ssl; ++l) slide[substr[l]] = ssl - l - 1;
 
    int k = 0;
 
    while(k < sl - ssl + 1) {
 
    for(int i = 0; i < ssl; i++) {
        if(string[k+i]!=substr[i])
        break;
        if( i == ssl-1)
        return k + 1;
    }
 
        k += slide[string[k+ssl-1]];
    }
    return -1;
}
проблема в том что работает она через раз (возможно зависит от текста)
зацикливание происходит из-за того, что здесь не изменяется условие
k += slide[string[k+ssl-1]];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 20:36     Зацикливание в алгоритме Хорспула
Посмотрите здесь:

Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула. - C++
Функция получает ссылки на две переменные: haystack и needle строкового типа. В haystack должна содержаться строка, в которой будет...

Зацикливание - C++
помогите исправить ошибку пожалуйста! у меня зацикливается она! # include &quot;stdafx.h&quot; # include &lt;stdio.h&gt; #include &lt;time.h&gt; ...

Ошибка в алгоритме - C++
Помогите найти ошибку в алгоритме. Алгоритм должен сортировать строки. void SortArrayString(string *&amp;arr, int n, char arr2) /* arr...

Ошибка в алгоритме - C++
Неправильно работает программа есть сетка (координаты x - в векторе A y - в векторе B) надо из известных точек проложить кратчайший...

Вероятное зацикливание - C++
Приведет ли такой код к краху? class MyClass1 { ... MyClass2 * ptr2; } class MyClass2 {

Зацикливание проверки - C++
Доброго времени суток! 1) Хотелось бы узнать почему не срабатывает проверка в цикле? 2) Можно ли обойтись без цикла и темболее уж без...

Cin.get() зацикливание while() - C++
Вот такой вот код... cout &lt;&lt; &quot;Введите размер 1-й матрицы: &quot;; while (!(cin &gt;&gt; N1 &gt;&gt; M1)) { system(&quot;cls&quot;); cin.clear(); ...

сделать зацикливание - C++
Всем привет, нужна помощь :).Шифр цезаря. Нужно сделать так, что бы например при сдвиге на 30, программа начинала сдвигать по новой, т.е....

Cin зацикливание - C++
Здравствуйте, столкнулся с такой проблемой: int a; bool b = true; while(b) { cout &lt;&lt; &quot;\nEnter value&quot; &lt;&lt; endl;...

Зацикливание класса - C++
int readmass(char* file) { FILE *mass =fopen(file,&quot;r&quot;); if( mass==NULL) { cout&lt;&lt;&quot;Не возможно открыть файл&quot;&lt;&lt;endl; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru