//3. Функция находит в строке пары одинаковых фрагментов и возвращает указатель на первый.
//С помощью функции найти все пары одинаковых фрагментов.
#include <string.h>
#include<iostream>
using namespace std;
const int minn = 1;//минимальная длина
int MyStrCmp(char *s1, char *s2)
{
int len = 0;
while (true)
{
if (*s1 == *s2 && *s1 != 0 && *s2 != 0)
{
len++;
s1++;
s2++;
continue;
}
return len;
}
}
char *Findpair(char *str, int *n)
{
*n = 0;
char *eos = str + strlen(str);
int maxN = 0;
char* foundPos = 0;
for (char *s2 = str + minn; s2 < eos; s2++)
{
int substrlen = MyStrCmp(str,s2);
if (substrlen >= minn && substrlen > maxN)
{
maxN = substrlen;
foundPos = str;
}
}
if (maxN > 0)
{
*n = maxN;
return foundPos;
}
return 0;
}
void PrintSubstring(char *s, int len)
{
for (int i=0; i<len; i++)
{
cout << s[i];
}
cout << endl;
}
int main()
{
char string[] = "abcdefabml";
for (char *str = string; *str; str++)
{
int n = 0;
char *c = Findpair(str, &n);
if (c != 0)
{
PrintSubstring(c, n);
}
}
system("pause");
}