Проверить, является ли строка палиндромом - 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, что означает успешное завершение работы программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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