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

Алгоритм поиска по строке Кнута-Морриса-Пратта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при записи данных в файл http://www.cyberforum.ru/cpp-beginners/thread647690.html
Для записи перменной типа string выделяю динамически массив из 64 элементов char,после записи данных освобождаю память,но почему-то при освобождении вылетает ошибка bool SaveData(vector<Subscriber> &subscribers) { // if(access("C:\\Subscribers\\list.txt",0) == -1) CreateDirectory(L"C:\\Subscribers\\",NULL); // fstream SubscribersList("C:\\Subscribers\\list.txt",ios::out |...
C++ C++ primer (Stanley B. Lippman)[2005] пример Sales_item.h C++ primer (Stanley B. Lippman) Там в одном месте исходник нужен, файл Sales_item.h, автор написал что он будет лежать на www.awprofessional/cpp_primer но оттуда перекидывает на http://www.informit.com/imprint/index.aspx?st=61085 а там никаких примеров нету.... Может знает кто, может выложен этот файл на другом сайте, не могу найти... http://www.cyberforum.ru/cpp-beginners/thread647686.html
C++ Клиент интернет-радио (интернет-радио плеер)
Кто знает как написать клиент интернет-радио на С++,или что можно почитать(для новичка С++) на тему сетевых приложений?:) Буду очень благодарен!
C++ 4 задачи на С++ написать
Помогите пожалуйста решить эти задачи на С++: 1. Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры массива целых чисел. 2. Найти минимальный элемент. 3. Дан двумерный массив размером 5x6, заполненный случайным образом. Заменить максимальный элемент каждой строки на противоположный. 4. Написать процедуру, которая выводит на экран...
C++ Матрицы и ООП http://www.cyberforum.ru/cpp-beginners/thread647599.html
Как эти задачи решить с помощью ООП 1. проверка матрици на симетричность относительно побочной диагонали 2. заполнение матрици по спирали, числами от 1 до n (квадрат)
C++ Задача из книги "C++ за 21 день" Застопорился на этой задаче. Задание: что неправильно в этой программе? #include <iostream> using namespace std; class CAT { public: CAT(int age){itsAge=age;} ~CAT(){} int GetAge()const{return itsAge;} подробнее

Показать сообщение отдельно
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 821
06.09.2012, 18:15     Алгоритм поиска по строке Кнута-Морриса-Пратта
Само задание таково:
Программа должна быть грамотно функционально разбита на модули и функции.
• Входные данные – текстовый файл.
• Выходные данные – текстовый файл, содержащий найденные слова с указанием позиции во входном файле (номер строки, позиция в строке, количество вхождений слова в файле).
номер строки: 3 позиция в строке:9

но при компилировании выдает ошибку
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <string.h>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
int algorithm_KMP (char s[], char q[])
    { 
    int  i=0, j=-1, N, M; 
    N = strlen(s); 
    M = strlen(q); 
    int *d =(int*)malloc(M*sizeof(int)); // динамический массив длины М
    /* Вычисление префикс-функции */ 
    d[0]=-1;
    while(i<M-1)
        {
        while((j>=0) && (q[j]!=q[i]))
            j = d[j];
        i++;
        j++;
        if(q[i]==q[j])
            d[i]=d[j];
        else
            d[i]= j;
        }
    /* поиск */
    for(i=0,j=0;(i<N)&&(j<M); i++,j++)
        while((j>=0)&&(q[j]!=s[i]))
            j=d[j];
    free (d);  /* освобождение памяти массива d */ 
    if (j==M)
        return i-j;
    else /* i==N */
        return -1;
    }
 
 
 
 
void main()
{
    setlocale (LC_ALL, "Russian_Russia.1251") ;
    const int n = 10;
 
    srand((unsigned)time(NULL));
 
    char s[]={"boys and girls"};
    char q[256];
 
    cout<<s<<endl<<endl;
 
    cout << "Введите строку для поиска:\n"; 
    cin.getline(q,256);
 
    int a, mas[n]={0};
    a = algorithm_KMP(s,q);
    if(a == -1)
        cout << "net stroki\n\n";
    else
        cout << "Starting with the index " << a << " line in the text" << endl<<endl;
    
 
 
}
Миниатюры
Алгоритм поиска по строке Кнута-Морриса-Пратта  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru