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