Ввести строку, вывести на экран только слова с симметричным расположением букв - 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
, чтобы вывести на экран только палиндромы из этого массива. В итоге, код решает задачу поиска и вывода на экран слов с симметричным расположением букв в строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д