Mam program który przeszukuje jakiś tekst i szuka w nim jakiegoś wyrazu.
Chciałbym przerobić go tak, by przeszukiwał jakiś tekst który jest w pliku " plik.txt "
a szukana fraza była wprowadzana z klawiatury, a rezultatem było wyświetlenie liczby , która informuje nas, którym z kolei znakiem jest pierwszy znak szukanego wyrazu.
Np. ( mamy do przeszukania tekst w pliku "plik.txt" o treści: " abrakadabra", i szukamy tekstu " rak", to wyświeli liczbę 2 )
Proszę o pomoc
Kod: Zaznacz cały
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<string.h>
const M = 4 ; /*stała liczba szukanego ciągu znaków */
int shift[M];
int init_shifts(char *w)
{
int i,j;
shift[0]=-1;
for(i=0,j=-1; i<M-i; i++,j++,shift[i]=j)
while((j>=0) && (w[i]!=j)) j=shift[j];
}
int kmp(char *w, char *t)
{
int i,j, N=strlen(t);
for(i=0,j=0; i<N && j<M; i++, j++)
while((j>=0) && (t[i]!=w[j]))
j=shift[j];
if(j==M) return i-M; else return -1;
}
void main()
{
char *w=1010";
init_shifts(w);
char *t= "abcd1010def";
cout << "Wynik poszukiwan = " <<kmp(w,t)<<endl;
}