AndrewTry

Run Settings
LanguageC++
Language Version
Run Command
// НИЖЕ ПРИВЕДЕНЫ КОММЕНТАРИИ ДЛЯ ТИМОХИ //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; }
Editor Settings
Theme
Key bindings
Full width
Lines