Является ли данный текст палиндромом? - C (СИ)

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

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

Дана строка символов, содержащая некоторый текст. Разработать программу, которая определяет, является ли данный текст палиндромом, т. е. читается ли он слева направо так же, как и справа налево (например, "А роза упала на лапу Азора").

Решение задачи: «Является ли данный текст палиндромом?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <wchar.h>
#include <wctype.h>
#include <locale.h>
 
bool is_palindrom(const wchar_t *str) {
    wchar_t *end = (wchar_t *)str + wcslen(str) - 1;
    
    while(str < end) {
        if(*str == L' ')
            ++str;
        if(*end == L' ')
            --end;
        
        if(towlower(*str) != towlower(*end))
            return false;
        
        ++str;
        --end;
    }
    
    return true;
}
 
int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    wchar_t *str = L"А роза упала на лапу Азора";
    
    fwprintf(stdout, L"Фраза \"%ls\" ", str);
    if(true == is_palindrom(str))
        fwprintf(stdout, L"является ");
    else
        fwprintf(stdout, L"не является ");
    fwprintf(stdout, L"палиндромом.\n");
    
    return EXIT_SUCCESS;
}

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

  1. Включаем необходимые заголовочные файлы для работы с широкими символами и строками
  2. Определяем функцию is_palindrom, которая принимает указатель на широкую строку и проверяет является ли она палиндромом
  3. Внутри функции инициализируем указатель end на последний символ строки, на которую указывает указатель str
  4. Используем цикл while для сравнения символов с начала и конца строки, обходя пробелы
  5. Если символы не равны, возвращаем false
  6. Если все символы равны, возвращаем true
  7. В функции main устанавливаем локаль на русскую, используя setlocale
  8. Инициализируем широкую строку А роза упала на лапу Азора
  9. Выводим строку на экран с помощью fwprintf
  10. Вызываем функцию is_palindrom и сохраняем результат в переменной типа bool
  11. Выводим соответствующее сообщение на экран с помощью fwprintf
  12. Возвращаем EXIT_SUCCESS для успешного завершения программы

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


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

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

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