Проверить, является ли строка палиндромом - C (СИ)

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

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

Cчитать из файла строку. Проверить, является ли она палиндромом. Пробелы игнорировать.

Решение задачи: «Проверить, является ли строка палиндромом»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
void remove_spaces(char * s) {
    if ( *s )
        remove_spaces( isspace(*s) ? memmove(s, s + 1, strlen(s)) : s + 1 );
}
 
int test_palindrome(const char * s, const size_t count) {
    return ( count > 1 ) ? ( s[0] ^ s[count - 1] || test_palindrome(s + 1, count - 2) ) : 0;
}
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        remove_spaces(buf);
        printf("%s\n", ( test_palindrome(buf, strlen(buf)) ) ? "NO" : "YES");
    }
    
    return 0;
}

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

  1. Первый шаг в функции main - запрос на ввод строки от пользователя с помощью printf и fgets.
  2. Введенная строка сохраняется в переменной buf.
  3. Если строка пустая или содержит только пробелы, то программа пропускает проверку на палиндром и выводит NO.
  4. Вызывается функция remove_spaces, чтобы удалить все пробелы из строки.
  5. Далее вызывается функция test_palindrome, которая проверяет, является ли строка палиндромом.
  6. Если строка является палиндромом, то выводится YES, иначе выводится NO.
  7. Цикл продолжается, пока пользователь не введет пустую строку или не завершит ввод.
  8. В конце программы возвращается 0, что означает успешное завершение работы программы.

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


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

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

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