Quick actions

cmd+k|ctrl+k

Navigation

Languages

AndrewTry

Snippet info

Language

Cpp

Visibility

public

Author

homiecage

Created

2017-03-19T09:15:34Z

Updated

2017-03-19T13:56:48Z

// НИЖЕ ПРИВЕДЕНЫ КОММЕНТАРИИ ДЛЯ ТИМОХИ

//include "stdafx.h"
#include<iostream>
using namespace std;

const int minn = 4;		//минимальный отрезок
int k = 0;	//счетчик длины отрезка


char *func(char *n){		//* перед функцией означает, что вернется указатель
    int maxn = 0;
	char *m;				//переменная которая перебирает элементы от начала и до конца
	char *s = NULL;			//выводимый указатель, изначально равен NULL, и останется нул если ничего не произойдет
	char *p;				//начало отрезка, если он равен m, то увеличивается вместе с m, если не равен то остается прежним,пока не найдется такое m равное ему.
	p = n; m = n + minn;	
	for (int i = 0; *m != '\0'; m++, i++){		//перебор от начала полученной строки до конца
		if (*p == *m){
			p++;					//p увеличивается вместе с m, чтобы проверить следующие схожие элементы
			k++;					//длина отрезка увеличивается

			if (k >= minn){			//если устраивает промежуток, то s присваиваем начало полученной строки
				s = n;
				if (i > maxn) maxn = i;
			}
		}
		else{						// фрагменты не удовлетворяют, тогда p снова получает значение первого элемента,а k обнуляется
			p = n;
			k = 0;
			i = 0;
		}
	}
    if (maxn >= minn) *(n++) = maxn;
	return s;
}
int main()
{
	char s[] = "abvgd abvg 23412 23412 ";
	int *n[10];
	char *c;
	char *q[10];
	for (int i = 0; i < 10; i++)
	{
	q[i] = NULL;
	n[i] = 0;
	}
	for (int j = 0, i = 0; s[j + minn] != 0; j++){
		c = func(&s[j]);
		if (c != NULL){
			q[i] = c;
			i++;
		}
	}
	for (int i = 0; q[i]!=NULL; i++)
			cout << q[i] << endl <<endl;
	system("pause");
	return 0;
}
INFO