Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 18:01   #1
Беата
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 29
По умолчанию Алгоритм Кнута-Морриса-Пратта или Рабина-Карпа (язык С++). Может у кого-нибудь есть готовый рабочий ?

пожалуйста
Беата вне форума Ответить с цитированием
Старый 26.03.2010, 18:06   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

http://www.ics.uci.edu/~eppstein/161/kmp/
http://www-igm.univ-mlv.fr/~lecroq/string/node8.html
Vago вне форума Ответить с цитированием
Старый 26.03.2010, 18:08   #3
Беата
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 29
По умолчанию

вообщем когда я ввожу его:

void preKmp(char *x, int m, int kmpNext[]) {
int i, j;

i = 0;
j = kmpNext[0] = -1;
while (i < m) {
while (j > -1 && x[i] != x[j])
j = kmpNext[j];
i++;
j++;
if (x[i] == x[j])
kmpNext[i] = kmpNext[j];
else
kmpNext[i] = j;
}
}


void KMP(char *x, int m, char *y, int n) {
int i, j, kmpNext[XSIZE];

/* Preprocessing */
preKmp(x, m, kmpNext);

/* Searching */
i = j = 0;
while (j < n) {
while (i > -1 && x[i] != y[j])
i = kmpNext[i];
i++;
j++;
if (i >= m) {
OUTPUT(j - i);
i = kmpNext[i];
}
}
}


пишут, что идентификатор OUTPUT не найдени что "результатом вычисления фрагмента не является функция, принимающая 1 аргументов".. что делать?

Последний раз редактировалось Беата; 26.03.2010 в 18:13.
Беата вне форума Ответить с цитированием
Старый 26.03.2010, 18:24   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Да это какая-то отладочная печать доморощенным макросом. Забейте этот оператор комментарием или вставьте печать стандартными ф-ями C / C++.
Vago вне форума Ответить с цитированием
Старый 26.03.2010, 19:59   #5
Беата
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Да это какая-то отладочная печать доморощенным макросом. Забейте этот оператор комментарием или вставьте печать стандартными ф-ями C / C++.
можете мне помочь? у меня что-то ничего не получается
Беата вне форума Ответить с цитированием
Старый 26.03.2010, 20:08   #6
Беата
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Да это какая-то отладочная печать доморощенным макросом. Забейте этот оператор комментарием или вставьте печать стандартными ф-ями C / C++.
можете мне помочь? у меня что-то ничего не получается
Беата вне форума Ответить с цитированием
Старый 26.03.2010, 20:55   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Господи, чему ж вас в ваших "высших школах" сейчас учат?!...

Код:
#include "stdio.h"
#include "string.h"

#define XSIZE 1024

/**
* Сразу за этим комментарием вставляете ф-ю preKmp без изменений.
*/


/**
 * Сразу за эти комментарием вставляете ф-ю KMP. Макрос OUTPUT(j - i); меняете на printf( "%d\n", j-i );
 */


void main() {

   char* czTheWholeString = "A roza upala na lapu";
   char* czStringToLookFor = "la";

   KMP( czStringToLookFor,
        strlen( czStringToLookFor ),
        czTheWholeString,
        strlen( czTheWholeString ) );

}
В качестве упражнения, можете добавить проверку на strlen( czTheWholeString ) <= XSIZE и красивую печать.

Added 21:00 CET
Или ничего не меняете и в KMP тоже, а после строчки с #define добавляете ещё одну:
Код:
#define OUTPUT( arg ) printf( "%d\n", arg );
Но этим Вы, наверняка, дадите Вашему преподавателю повод задать Вам пару дополнительных вопросов. Не уверен пока, что Вам этого хочется.

Последний раз редактировалось Vago; 26.03.2010 в 23:00.
Vago вне форума Ответить с цитированием
Старый 27.03.2010, 10:50   #8
Беата
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Господи, чему ж вас в ваших "высших школах" сейчас учат?!...

сложный вопрос..
Беата вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Кнута-Морриса-Пратта Crazy_Gamer Помощь студентам 1 17.12.2009 18:27
алгоритм рабина-карпа(поиск подстроки) kristy42 Помощь студентам 0 03.11.2009 18:41
Как решать японские кроссворды или судоку? Может у кого-нибудь есть идеи? TwiX Свободное общение 2 16.08.2009 07:56
Может у кого нибудь есть программа поиска файла по шаблону?бросьте пжл andreww Общие вопросы Delphi 5 03.06.2009 10:15
ребят может у кого-нибудь есть исходники для программы поиска файлов соответствующих шаблону? andreww Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2009 10:18