Ввести строку, вывести на экран только слова с симметричным расположением букв - 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; }
Объяснение кода листинга программы
В этом коде используется несколько функций для решения задачи. Вот список элементов с их номерами:
- Функция
isAlpha
(строка 3) преобразует символ в нижний регистр и возвращаетtrue
, если он является буквой, иfalse
в противном случае. - Функция
toLower
(строка 4) принимает символ и возвращает его в нижнем регистре. Если символ является заглавной буквой, он преобразуется в соответствующую строчную букву. - Функция
getWord
(строка 7) принимает строку и указатели на начало и конец текущего слова в этой строке. Она ищет начало первого слова, заглавную букву в следующем слове и конец текущего слова. Затем она возвращает длину текущего слова. - Функция
isPali
(строка 14) принимает два указателя на символы в строке и возвращаетtrue
, если все символы между ними являются палиндромами, иfalse
в противном случае. - Функция
printPali
(строка 19) принимает строку и выводит на экран только те слова, которые являются палиндромами. - В функции
main
(строка 28) создается массив строкtext
, содержащий несколько слов. Затем вызывается функцияprintPali
, чтобы вывести на экран только палиндромы из этого массива. В итоге, код решает задачу поиска и вывода на экран слов с симметричным расположением букв в строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д