Quick actions

cmd+k|ctrl+k

Navigation

Languages

LangProgLaba1

Snippet info

Language

Cpp

Visibility

public

Author

homiecage

Created

2017-03-19T04:36:08Z

Updated

2017-03-20T10:03:08Z

//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");
}

INFO