void karp_rabin(string teskt,string wzorzec, int q)
{
int m = wzorzec.length();
int n = teskt.length();
int p=0,t=0,h=1,d=26; // p=hash wzorzec, t=hash tekst
for(int i=0;i<m-1;i++)
{
h=(h*d)%q;
}
for(int i=0;i<m;i++)
{
p=(d*p+wzorzec[i])%q;
t=(d*t+teskt[i])%q;
}
for(int i=0;i<=n-m;i++)
{
if(p==t)
{
int flag=0;
for(int j=0;j<m;j++)
{
if(teskt[i+j]!=wzorzec[j])
{
flag=1;
break;
}
}
if(flag==0)
{
cout<<"Wzorzec znaleziony na: "<<i+1<<endl;
}
}
if(i<n-m)
{
t=(d*(t-teskt[i]*h)+teskt[i+m])%q;
if(t<0)
{
t=(t+q);
}
}
}
}
Wie ktoś jak to zmienić, żeby spacje w tekście były uwzględniane, bo na razie po wprowadzeniu tekstu ze spacjami przerywa działanie.
string wzorzecKR;
string tekstKR;
cout << "Wprowadz teskt(KR):";
cin>>tekstKR;
cout << "Wprowadz wzorzec(KR):";
cin>>wzorzecKR;
karp_rabin(tekstKR,wzorzecKR,97);