Advertisement
LessVegetables

Untitled

Jun 17th, 2024
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. // Функция F19 подсчитывает количество симметричных подстрок длиной 4 и более символов в строке p.
  4. int F19(char* p) {
  5.     char* c;
  6.     int ns;  // Счетчик для количества симметричных подстрок
  7.  
  8.     // Внешний цикл проходит по каждому символу строки p
  9.     for (c = p, ns = 0; *c != '\0'; c++) {
  10.         // Внутренний цикл проверяет симметрию для подстрок вокруг текущего символа
  11.         for (int k = 0; c - k >= p && c[k] != '\0'; k++) {
  12.             // Прерываем, если символы по обе стороны от текущего не равны
  13.             if (c[-k] != c[k]) break;
  14.             // Увеличиваем счетчик, если длина симметричной подстроки >= 4 символов (k >= 3)
  15.             if (k >= 3) ns++;
  16.         }
  17.     }
  18.     return ns; // Возвращаем количество симметричных подстрок
  19. }
  20.  
  21. int main() {
  22.     // Примеры тестов
  23.     char str1[] = "abccbaabccba";
  24.     char str2[] = "abcd";
  25.     char str3[] = "aaaabaaa";
  26.     char str4[] = "abccba";
  27.     char str5[] = "12344321";
  28.  
  29.     // Вывод результатов для различных тестовых строк
  30.     printf("%s: %d\n", str1, F19(str1)); // Ожидается: 9
  31.     printf("%s: %d\n", str2, F19(str2)); // Ожидается: 0
  32.     printf("%s: %d\n", str3, F19(str3)); // Ожидается: 3
  33.     printf("%s: %d\n", str4, F19(str4)); // Ожидается: 2
  34.     printf("%s: %d\n", str5, F19(str5)); // Ожидается: 3
  35.  
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement