Witam wszystkim.
Mam problem z napisaniem takiej funkcji:
"napisz funkcję, która znajduje wszystkie wzorce występujące w tekście, zwraca wskaźnik do tablicy indeksów (wewnątrz funkcji dynamiczna rezerwacja pamięci dla tablicy indeksów) oraz udostępnia ich ilość przez wskaźnik:
int *KMP_w(char *tekst, char *wzor, int *next, int *ilosc);
z funkcją wyszukującą wzorzec w tekście sobie poradziłem ale mam problem ze zliczeniem ilości wzorów i przekazania tego do tablicy itd.
Oto co mam
int *KMP_w (char *tekst, char *wzor, int *next, int *ilosc)
{
int k=0; //zmienna rozmiaru tablicy
int *tab = NULL; //tablica przechowujaca indeksy
int n,m; //zmienna dlugosci tekstu i wzorca
int i,j; // i -indeks tekstu, j-indeks wzorca
n=dlugosc (tekst); //funkcja zliczajaca dlugosc (wiem że można użyć strlen, ale takie miałem zadanie)
m=dlugosc (wzor);
for (i=0,j=0;i<n && j<m;i++,j++)
{
while ((j>0) && (tekst[i] != wzor [j]))
j=next[j];
if (j==m-1)
{
tab=(int*)realloc(tab,(k+1)*sizeof(int));
tab[k]=i-m+1;
k++;
i=i-m+1;
j=-1;
}
}
return tab;
}
wydaje mi się że brakuje mi czegoś na końcu żeby w tej tablicy się zgadzało wszystko, ale nie wiem jak to ugryźć.
Z góry dzięki za wskazówki. :)