#include <conio.h>
#include <stdio.h>
int index(char * ST1, char * ST2)
{int i,j,m1,m2,max=0;
for(m1=0; ST1[m1] !='\0'; m1++);
for(m2=0; ST2[m2] !='\0'; m2++);
if(m2>m1)
return -1;
for(i=0; i<=m1-m2; i++)
{
for(j=0; j<m2; j++)
if(ST1[j] != ST2[i+j])
break;
if(j==m2)
return i;
}return -1;
}
void main()
{
char S1[ ]="прпрпрпрпрпрпрпр";
char S2[ ]="пр";
printf("\nIndex=%d", index(S1,S2));
getch();
}
[C++] Вхождение в строку заданной подстроки
Народ помогите пожалуйста, срочна надо сдавать лабу, задача была такая :разработать функцию, которая находит последнее вхождение в строку заданной подстроки(без использования string h)!Подскажите пожалуйста, почему программа у меня не правильно работает:confused:
Код:
for(i=m1-m2-1;i>0; i++)
{
for(j=0; j<m2; j++)
if(ST1[j] != ST2[i+j])
break;
if(j==m2)
return i;
}return -1;
}
{
for(j=0; j<m2; j++)
if(ST1[j] != ST2[i+j])
break;
if(j==m2)
return i;
}return -1;
}
Цитата: Hydra
Цикл просто задом наперд пусти
Код:
for(i=m1-m2-1;i>0; i++)
{
for(j=0; j<m2; j++)
if(ST1[j] != ST2[i+j])
break;
if(j==m2)
return i;
}return -1;
}
{
for(j=0; j<m2; j++)
if(ST1[j] != ST2[i+j])
break;
if(j==m2)
return i;
}return -1;
}
Спасибо!
Используй алгоритм Кнута-Морриса-Пратта