Продублировать через 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы