Продублировать через 1 пробел слова, являющиеся палиндромами четной длины - C (СИ)
Формулировка задачи:
Отредактировать строку, продублировав через 1 пробел слова, являющиеся палиндромами четной длины и содержащими заданную под-строку.
Решение задачи: «Продублировать через 1 пробел слова, являющиеся палиндромами четной длины»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> char* poly_rep(char* s, size_t N){ char* p, *i, *o, *t = s; size_t k, l, n = strlen(s) + 1; while(*s){ while(*s && ! isalnum(*s)) ++s; p = s + 1; while(isalnum(*p)) ++p; l = (size_t)(p - s); if(! (l % 2)){ i = p - 1; o = s; while((s < i) && (*s == *i)){ ++s; --i; } if(s > i){ if((n + l + 1) >= N) break; k = (size_t)(o - t); memmove(p + 1, o, (n - k) * sizeof(char)); *p = ' '; p += l + 1; n += l + 1; } } s = p; } return t; } int main(void){ char s[64] = "KOOK, wow [ABBA], bla 21LL12"; puts(s); puts( poly_rep(s, sizeof(s)- 1) ); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д