Ввести строку, вывести на экран только слова с симметричным расположением букв - C (СИ) (73517)
Формулировка задачи:
Ввести строку, вывести на экран только слова с симметричным расположением букв.Подскажите пожалуйста как это сделать
Решение задачи: «Ввести строку, вывести на экран только слова с симметричным расположением букв»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
main()
{
const int BUFF_LEN = 80;
char buf[BUFF_LEN];
scanf("%[^\n]", buf, BUFF_LEN);
char sep[2]=" ";
char *istr;
istr = strtok (buf, sep);
while (istr != NULL)
{
//здесь делаем проверку над выделенным словом из строки
//пердпологаем что слова разделенны пробелом
//на выделенное слово у нас указывает istr
int len = strlen(istr);
char sym = 1;
int i = 0;
for(; i < len / 2; ++i)
{
if(istr[i] != istr[len-i-1])
{
sym = 0;
break;
}
}
if(sym)
{
printf("%s\n", istr);
}
istr = strtok (NULL,sep);
}
}
Объяснение кода листинга программы
В этом коде:
- Вводится строка с помощью функции scanf.
- Создается пустая строка
sepдля разделения входной строки на слова. - Используется функция strtok для разделения входной строки на слова и сохранения их в переменной
istr. - В цикле while происходит проверка каждого слова на наличие симметричного расположения букв.
- Для каждого слова выделяется память под строку с помощью функции strlen.
- В каждой половине слова сравниваются буквы с помощью цикла for.
- Если буквы не совпадают, то переменной
symприсваивается значение 0 и цикл прерывается с помощью оператора break. - Если все буквы совпадают, то переменной
symприсваивается значение 1 и слово выводится на экран с помощью функции printf. - После обработки каждого слова, функция strtok вызывается снова для поиска следующего слова в входной строке.
- После обработки всех слов, программа завершается.