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

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

Восстановить пароль Регистрация
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
23.11.2013, 20:36     Зацикливание в алгоритме Хорспула #1
есть функция для поиска подстроки в строке по алгоритму Хорпсула
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++ Зацикливание
зацикливание в C++ C++
C++ Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула.
зацикливание C++
Зацикливание C++
Зацикливание C++
C++ Ошибка в алгоритме
Зацикливание C++

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

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

Текущее время: 00:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru