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