LangProgLaba1

Run Settings
LanguageC++
Language Version
Run Command
//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"); }
Editor Settings
Theme
Key bindings
Full width
Lines