bool bmsearch(char *ward,int position)
{
int i=0;//индекс начала слова в тексте
int j=0;//индекс текущего символа
int z=0,n;
struct bmslovo alfo[255];
//char mas[255];
int m=strlen(ward)-1;
int t=m;// t,m-размер слово которое ищем
//char *ch;
//создать алфовит.
while(m>0)
{
for(n=z;n>=0;n--)
{
if (ward[m]==alfo[n].bukva)
goto mmm;
}
alfo[z].bukva=ward[m];
alfo[z].line=t-m;
z++;
mmm: m--;
}//создание алфовита закончено
alfo[0].line=1;// расстояние от крайнего правого символа до конца слова.
z--;//z-размер алфовита.
char slovo[255]="abcafdfmbcabdabcabd";
bool sovpalo=false;
n=strlen(slovo);
i=t;
j=t;
WWW:while((i<n)&&(!sovpalo))
{
if(j==-1)
return true;
if(ward[j]==slovo[i])
{
i--;
j--;
}
else
{
for(m=0;m<=z;m++)//поиск несовпавшей буквы в алфовите
{
if(slovo[i]==alfo[m].bukva)
{
i=i+alfo[m].line;
j=t;
goto WWW;
}
}
j=t;
i=i+(t+1);
}
//if(j==0)
// return true;
}
return sovpalo;
}