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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать основные переменные и функции http://www.cyberforum.ru/cpp-beginners/thread757763.html
опишите пожалуйста основные переменные и функции. очень буду благадарна #include <cstdlib> #include <iostream> #include <string> #include <locale.h>
C++ Перегрузить для класса оператор == (много ошибок) не могу разабраться в чем ошибки при компиляции... помогите пожалуйста код: #include "StdAfx.h" #include <conio.h> #include <string> #include <iostream> #include <fstream> #include <cstdlib> http://www.cyberforum.ru/cpp-beginners/thread757745.html
Напишите програму которая разработает класси набор методов для модели заданного обьекта C++
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести программу (int main), использующий объекты разработанного класса: Объект «рационально не сократимых дробь, представлен парой целых чисел». Конструктор должен позволить создавать объекты без и с начальной...
C++ Файлы. Дописать в начало каждой строки
Здравствуйте Сделайте, пожалуйста, программу, которая будет добавлять +7 к номеру в списке Т.е. имеется txt файл с телефонными номерами списком: 9858256773 9304302502 9281133881 9296642107 9664210720 9096916753 9167532006
C++ Проблма с #include http://www.cyberforum.ru/cpp-beginners/thread757640.html
Добрый день. Есть два класса, например A и B. Эти классы независимы друг от друга. В заголовочном файле класса А делаю: #include "B.h". Теперь я могу использовать все фичи класса B, например так: B *objOfClassB = new B(this); Т.к. я в конструктор передаю указатель на класс А, то в объекте objOfClassB нужно этим как-то воспользоваться. Например: B::B(B *parent) : QWidget(parent) { ...
C++ Перемешивание списка фамилий Есть список участников забега, допустим 10 фамилий. мне надо, случайно определить кто выйдет на старт 1, кто вторым, и т.д. Т.е вводим десять фамилий , нажимаем Enter, и он выводит их в другом порядке. Помогите пожалуйста. подробнее

Показать сообщение отдельно
FlaYnoSt
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
10.01.2013, 16:06     Алгоритм Кнута, Морриса и Пратта
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
int KMPSearch(char *string, char *substring){ //в качестве параметров в функцию передается строка и субстрока
  int  sl, ssl;
  int res = -1;
  sl = strlen(string);                                            //присваивается длина строки
  ssl = strlen(substring);                                      //присваивается длина субстроки
  if ( sl == 0 )                                                    //проверка строки
    cout << "Неверно задана строка\n"; 
  else if ( ssl == 0 )                                            //проверка субстроки
    cout << "Неверно задана подстрока\n"; 
  else {                                                            //Если все нормально - поехали
    int  i, j = 0, k = -1;
    int  *d;
    d = new int[1000];                                         //создали динамический одномерный массив
    d[0] = -1;                                                    //первый элемент делаем равным -1
    while ( j < ssl - 1 ) {                                      //пока  j < кол-ва эл-тов строки
      while ( k >= 0 && substring[j] != substring[k] ) /*пока k больше или равно 0 и j-тый элемент субстроки не равен
                                                                     k-тому присваиваем k k-тый элемент динамического массива*/
        k = d[k];                                                 
      j++;                                                         //увеличиваем j
      k++;
      if ( substring[j] == substring[k] )                   //если j-ый элемент субстроки равен k-тому
        d[j] = d[k];                                             //присваиваем j-тому элементу динамического массива k-тый
      else                                                         //иначе
        d[j] = k;                                                 //присваиваем k
    }
    i = 0;
    j = 0;                                                         //обнулили i, j
    while ( j < ssl && i < sl ){                               //пока j < длины субстроки и i < длины строки
      while ( j >= 0 && string[i] != substring[j] )       // пока j >= 0 и i-ый элемент субстроки не равен j-ому
        j = d[j];                                                  //j присваивается j-ый элемент динамического массива
      i++;
      j++;                                                         //увеличиваем i и j
    }
    
    
    delete [] d;                                                 //удаляем динам. массив                                                
    res =  j == ssl ? i - ssl : -1;                           // результатом будет i-ssl если j = ssl и -1 в противном случае
  }
  return res;
}
 
Текущее время: 10:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru