Проверить, является ли строка палиндромом - 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; }
Объяснение кода листинга программы
- Первый шаг в функции
main
- запрос на ввод строки от пользователя с помощьюprintf
иfgets
. - Введенная строка сохраняется в переменной
buf
. - Если строка пустая или содержит только пробелы, то программа пропускает проверку на палиндром и выводит
NO
. - Вызывается функция
remove_spaces
, чтобы удалить все пробелы из строки. - Далее вызывается функция
test_palindrome
, которая проверяет, является ли строка палиндромом. - Если строка является палиндромом, то выводится
YES
, иначе выводитсяNO
. - Цикл продолжается, пока пользователь не введет пустую строку или не завершит ввод.
- В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д