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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. //-----------------------------------------------------------------------------
  4. int isAlpha(int ch) {
  5.     return (('a' <= ch) && (ch <= 'z'))
  6.             || (('A' <= ch) && (ch <= 'Z'));
  7. }
  8. //-----------------------------------------------------------------------------
  9. int toLower(int ch) {
  10.     return (('A' <= ch) && (ch <= 'Z')) ? (ch + 32) : ch;
  11. }
  12. //-----------------------------------------------------------------------------
  13. int getWord(char str[], char* begin[], char* end[]) {
  14.     for (; *str && !isAlpha(*str); ++str) { ; }
  15.     *begin = str;
  16.  
  17.     for (; isAlpha(*str); ++str) { ; }
  18.     *end = str;
  19.  
  20.     return *end - *begin;
  21. }
  22. //-----------------------------------------------------------------------------
  23. int isPali(const char* begin, const char* end) {
  24.     for (; (begin < end) && (toLower(*begin) == toLower(*end)); ++begin, --end) { ; }
  25.  
  26.     return (*begin == *end);
  27. }
  28. //-----------------------------------------------------------------------------
  29. void printPali(char text[]) {
  30.     char* begin, * end;
  31.     int len;
  32.  
  33.     while ((len = getWord(text, &begin, &end)) > 0) {
  34.         if (isPali(begin, end - 1)) {
  35.             printf("%.*s\n", len, begin);
  36.         }
  37.         text = end;
  38.     }
  39. }
  40. //-----------------------------------------------------------------------------
  41. int main() {
  42.     char text[] = "test, non, work, anna, tenet, text, Malayalam, aibohphobia";
  43.  
  44.     printPali(text);
  45.  
  46.     return 0;
  47. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы