Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Упражнение 3. Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку.

Решение задачи: «Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
char * mk_palindrome(char * s) {
    char * pIn, * pOut = s + strlen(s);
    
    for ( pIn = pOut; pIn > s; )
        *pOut++ = *(--pIn);
    *pOut = '\0';
    
    return s;
}
 
#define WORD_LENGTH (64)
#define get_word(w) ( scanf("%63s", (w)) == 1 )
 
int main(void) {
    char buf[WORD_LENGTH * 2];
    
    while ( printf("Word (max %d symbols): ", WORD_LENGTH - 1) && get_word(buf) )
        printf("Result: %s\n", mk_palindrome(buf));
    
    return 0;
}

Объяснение кода листинга программы

  1. Создаем функцию mk_palindrome, которая принимает указатель на строку s и возвращает указатель на новую строку-палиндром.
  2. В функции mk_palindrome инициализируем два указателя: pIn указывает на первый символ строки s, а pOut указывает на последний символ новой строки, которая будет палиндромом.
  3. В цикле перебираем символы строки s от начала к концу и записываем их в обратном порядке в новую строку, которую указывает pOut.
  4. После завершения цикла добавляем нулевой символ в новую строку.
  5. Возвращаем новую строку.
  6. В функции main создаем буфер buf для хранения введенной строки.
  7. В цикле запрашиваем у пользователя ввод строки с помощью scanf и выводим результат работы функции mk_palindrome на экран.
  8. Программа завершается после достижения максимального количества итераций цикла или при нажатии клавиши Ctrl+D.

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


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

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

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