Ввести строку, вывести на экран только слова с симметричным расположением букв - C (СИ) (72242)

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

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

Ввести строку, вывести на экран только слова с симметричным расположением букв. Нужно написать программу, используя только библиотеки stdio.h, stdlib.h. Помогите, пожалуйста. Заранее спасибо.

Решение задачи: «Ввести строку, вывести на экран только слова с симметричным расположением букв»

textual
Листинг программы
#include <stdio.h>
 
//-----------------------------------------------------------------------------
int isAlpha(int ch) {
    return (('a' <= ch) && (ch <= 'z'))
            || (('A' <= ch) && (ch <= 'Z'));
}
//-----------------------------------------------------------------------------
int toLower(int ch) {
    return (('A' <= ch) && (ch <= 'Z')) ? (ch + 32) : ch;
}
//-----------------------------------------------------------------------------
int getWord(char str[], char* begin[], char* end[]) {
    for (; *str && !isAlpha(*str); ++str) { ; }
    *begin = str;
 
    for (; isAlpha(*str); ++str) { ; }
    *end = str;
 
    return *end - *begin;
}
//-----------------------------------------------------------------------------
int isPali(const char* begin, const char* end) {
    for (; (begin < end) && (toLower(*begin) == toLower(*end)); ++begin, --end) { ; }
 
    return (*begin == *end);
}
//-----------------------------------------------------------------------------
void printPali(char text[]) {
    char* begin, * end;
    int len;
 
    while ((len = getWord(text, &begin, &end)) > 0) {
        if (isPali(begin, end - 1)) {
            printf("%.*s\n", len, begin);
        }
        text = end;
    }
}
//-----------------------------------------------------------------------------
int main() {
    char text[] = "test, non, work, anna, tenet, text, Malayalam, aibohphobia";
 
    printPali(text);
 
    return 0;
}

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

В этом коде используется несколько функций для решения задачи. Вот список элементов с их номерами:

  1. Функция isAlpha (строка 3) преобразует символ в нижний регистр и возвращает true, если он является буквой, и false в противном случае.
  2. Функция toLower (строка 4) принимает символ и возвращает его в нижнем регистре. Если символ является заглавной буквой, он преобразуется в соответствующую строчную букву.
  3. Функция getWord (строка 7) принимает строку и указатели на начало и конец текущего слова в этой строке. Она ищет начало первого слова, заглавную букву в следующем слове и конец текущего слова. Затем она возвращает длину текущего слова.
  4. Функция isPali (строка 14) принимает два указателя на символы в строке и возвращает true, если все символы между ними являются палиндромами, и false в противном случае.
  5. Функция printPali (строка 19) принимает строку и выводит на экран только те слова, которые являются палиндромами.
  6. В функции main (строка 28) создается массив строк text, содержащий несколько слов. Затем вызывается функция printPali, чтобы вывести на экран только палиндромы из этого массива. В итоге, код решает задачу поиска и вывода на экран слов с симметричным расположением букв в строке.

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

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