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

Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатели и ссылки [С++] http://www.cyberforum.ru/cpp-beginners/thread423728.html
Всем привет. я тут программу делаю. Цель: определить,принадлежит ли точка заданному промежутку(а точнее лежит внутри или снаружи фигуры). Координаты храню в массивах(по 2 значения: x и y.). Вопрос такой: можно ли создать указатель(или ссылку),который бы хранил область памяти на массив,чтобы потом им можно было манипулировать,как и массивом? к примеру: int a; int &y= a; &y = 2; &y = 5; //...
C++ сумма элементов матрицы Здравствуйте. Такая задача: В массиве А (m = n) сумму элементов над главной диагональю поделить на сумму элементов под главной диагональю. Элементы под глав-ной диагональю рассортировать по убыванию. Помогите найти суммы элементов. #include <iostream> #include <iomanip> using namespace std; int main() { setlocale(LC_ALL, "Russian"); http://www.cyberforum.ru/cpp-beginners/thread423726.html
C++ Функции (Даны три вещественные квадратные матрицы 4-го порядка)
Даны три вещественные квадратные матрицы 4-го порядка. Напечатать ту из них,норма которой наименьшая (считать, что такая матрица одна). В качестве нормы матрицы взять максимум абсолютных величин ее элементов Заранее спасибо)) пож...мне очень срочно у меня через 3 дня экзамен!
Рекурсия(вычислить 1*2*3*...n+2*3*4*...(n-1)+3*4*5*(n-2)+...) C++
дано натуральное число n. вычислить 1*2*3*...n+2*3*4*...(n-1)+3*4*5*(n-2)+... Очень срочно!! Заранее спасибо!!
C++ Оформить в циклке http://www.cyberforum.ru/cpp-beginners/thread423639.html
temp = a; temp = a; temp = a; temp = a; temp = a; temp = a; a = a; a = a; a = a;
C++ Ассоц. и послед. контейнеры. Разница в методах и алгоритмах. Добрый вечер всем! Возник вопрос - прошу помощи. Речь об STL... В чем проблема собственно: почему для использования у множества с пользовательскими объектами метода find() не нужен перегруженный оператор== ??? Для тех же списков или векторов, да и для двухсторонних очередей тоже, наличие == обязательно (для все того же find(), только тут это алгоритм). Тоже самое с count(). Заранее благодарен.... подробнее

Показать сообщение отдельно
InfernalA1D
Сообщений: n/a
06.01.2012, 23:48     Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула.
Функция получает ссылки на две переменные: haystack и needle строкового типа. В haystack должна содержаться строка, в которой будет осуществлён поиск, а needle должна содержать подстроку, которую надо найти. В результате выполнения процедуры переменная функция вернёт номер позиции (при нумерации с единицы), начиная с которого подстрока needle входит в строку haystack, или 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
25
26
27
28
29
30
31
32
33
34
35
36
37
int CP7Dlg::BM(char *haystack, char *needle)
{   UpdateData(1);
        int i=0,j=0,k=0, needle_len=0, haystack_len=0;
        char needle_table[256];
        
        needle_len=edit2.GetLength();
        haystack_len=edit1.GetLength();
                        
    if (needle_len <= haystack_len)
        {
                for (i = 0; i < 256; i++)
                        needle_table[i] = needle_len;
 
                for (i = 1; i < needle_len; i++)
                        needle_table[needle[i-1]] = needle_len-i;
 
                i = needle_len;
                j = i;
 
                while ( j > 0 && i <= haystack_len)
                {
                        j = needle_len;
                        k = i;
                        while ( j > 0 && haystack[k-1] == needle[j-1])
                        {
                                --k;
                                --j;
                        }
                        i+=needle_table[haystack[k-1]];
                
                }
                if (i > haystack_len)
                        return 0;
                else return k+1;
        }
        else return 0;
}
Где ошибка?!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru