Дана строка символов до точки. Определить, является ли она палиндромом - C (СИ)
Формулировка задачи:
Дана строка символов до точки. Определить, является ли она палиндромом. (Палиндром слева направо и справа налево читается одинаково, например "Леша на полке клопа нашел.") Пробелы и знаки препинания, а также регистр букв не учитываются.
написал код, а он работает не верно, в чем ошибка понять не могу, помогите пожалуйста!
#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int i,j; char str[20], str1[20]; puts("Vvedite stroky:\n"); gets(str); j=0; for(i=strlen(str);i>=0;i--) { str1[j]=str[i]; j++; } if(strcmp(str,str1)==0) puts("yes\n"); else puts("no\n"); system("pause"); return 0; }
Решение задачи: «Дана строка символов до точки. Определить, является ли она палиндромом»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i,j; char str[20],str1[20]; puts("Vvedite stroky:\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("yes\n"); else puts("no\n"); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: i, j, k.
- Переменная str используется для хранения введенной пользователем строки.
- Переменная str1 используется для хранения перевернутой строки.
- Выводится сообщение
Vvedite stroky:\n
и пользователь вводит строку. - Переменная j инициализируется нулем.
- В цикле for перебираются символы строки str в обратном порядке.
- Каждый символ копируется из строки str в строку str1 с добавлением к индексу j.
- После завершения цикла, последнему символу строки str1 добавляется ноль.
- С помощью функции strcmp сравниваются строки str и str1.
- Если строки равны, выводится
yes
, иначе выводитсяno
. - Выводится сообщение
Press any key to continue.
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д