Поиск в строке по алгоритму Кнута - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот код алгоритма...компилирую на досовском BC...не могу устранить ошибки...в чем дело...прошу помощи!!
#include <stdio.h>
#include <conio.h>
#include <string.h>
int SrchKMP(char *S,char *P);
void main()
{
 char S[]="iv ivanobich ivanikin";
 char P[]="ivanikin";
 int r;
 r=SrchKMP(S,P);
 if (r<0)
  printf("\n podstroka \"%s\" ne naidena",P);
 else
  printf("\n podstroka \"%s\" naidena, pozichija i=%d",P,r);
  getch();
}
 
/*=======================================================*/
 
char* SrchKMP(char *S, char *P)
{
 int i,j,k,M,N;
 int *d[100];
 M=strlen(P); N=strlen(S);
 d[0]=-1; j=0; k=-1;
 while (j<(M-1))
  {
   while ((k>=0) && (P[j]!=P[k]))
    k=d[k];
    j++; k++;
    if (P[j]==P[k])
     d[j]=d[k];
    else
    d[j]=k;
  }
 i=0; j=0; k=0;
 while ((j<M) && (i<N))
  {
   while (k<=i)
   k++;
   while ((j>=0) && (S[i]!=P[j]))
    j=d[j];
    i++;j++;
  }
  if (j==M)
   return &S[i-M];
  else
   return NULL;
}

Решение задачи: «Поиск в строке по алгоритму Кнута»

textual
Листинг программы
int SrchKMP(char *S,char *P);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы