Определить, является ли строка палиндромом - C (СИ) (71918)
Формулировка задачи:
Дана строка символов до точки. Определить, является ли она палиндромом. (Палиндром слева направо и справа налево читается одинаково, например "Леша на полке клопа нашел") Пробелы и знаки препинания, а также регистр букв не учитываются.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j;
char str[20],str1[20];
puts("Введите строку:\n");
gets(str);
j=0;
for(i=strlen(str)-1; i>=0; i--)
{
str1[j]=str[i];
j++;
}
str1[j]=0;
if(strcmp(str,str1)==0)
puts("да\n");
else
puts("нет\n");
system("pause");
return 0;
}Решение задачи: «Определить, является ли строка палиндромом»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j;
char str[50]="a roza upala na lapu azora",str1[50];
puts("Введите строку:\n");
//gets(str);
j=0;
for(i=strlen(str)-1; i>=0; i--)
{
if(str[i]!=' ')
str1[i]=str[i];
}
bool fl=true;
int n=strlen(str1);
for(i=0;i<n/2;i++)
if (str1[i]!=str1[n-1-i])
{
puts("no\n");
return 0;
}
puts("yes\n");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Подключаются необходимые библиотеки.
- Определяются переменные:
iиj- для работы с циклами.str- строка, которую необходимо проверить на палиндром.str1- дополнительная строка для обработки в цикле.
- Пользователю предлагается ввести строку.
- В цикле заполняется строка
str1символами изstr, при этом игнорируются пробелы. - Переменная
flустанавливается вtrue, а переменнаяnполучает длину строкиstr1. - В цикле проверяется, являются ли символы
str1на позицииiиn-1-iодинаковыми. - Если символы не совпадают, то выводится сообщение
noи программа завершается. - Если все символы совпадают, то выводится сообщение
yes.