po implementacji algorytmu wyrzuca mi błąd że zmienna M jest niezidentyfikowana, widać w kodzie, że żadna wartość nie jest przydzielona do tej zmiennej. Kod sprawdzałem z tym który jest podany w dziale algorytmy tej strony, oraz weryfikowałem jego poprawnosć z innym źródłem. I następne pytanie, w jaki sposób będę mógł wyodrębnić wartosć (tzn skopiować np do innej tablicy char) znalezioną w tekście wg wzorca (ponieważ musze później zamienić wielkość liter z małych na duże w tym znalezionym fragmencie)
a to algorytm BM:
const K = 53; // litery(26+26) i spacja (1)
int shift[K];
int indeks(char c)
{ switch(c) {
case 32: return 0; // spacja
default: if(islower(c)) return c-'a'+1;
else return c-'A'+27;
}
}
void InitShift(char *w)
{
int i;
for(i=0; i < K; i++) shift[i]=M;
for(i=0; i < M; i++) shift[indeks(w[i])]=M-i-1;
}
int BM(char *t, char *w)
{
int i,j,N=strlen(t),x;
for(i=M-1,j=M-1; j > 0; i--,j--)
while( t[i]!=w[j] )
{ x=shift[indeks(t[i])];
if(M-j > x) i+=M-j; else i+=x;
if(i >= N) return -1;
j=M-1;
}
return i;
}