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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char * mk_palindrome(char * s) {
  5.     char * pIn, * pOut = s + strlen(s);
  6.    
  7.     for ( pIn = pOut; pIn > s; )
  8.         *pOut++ = *(--pIn);
  9.     *pOut = '\0';
  10.    
  11.     return s;
  12. }
  13.  
  14. #define WORD_LENGTH (64)
  15. #define get_word(w) ( scanf("%63s", (w)) == 1 )
  16.  
  17. int main(void) {
  18.     char buf[WORD_LENGTH * 2];
  19.    
  20.     while ( printf("Word (max %d symbols): ", WORD_LENGTH - 1) && get_word(buf) )
  21.         printf("Result: %s\n", mk_palindrome(buf));
  22.    
  23.     return 0;
  24. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы