Дана строка. Найти в ней все слова перевертыши - C (СИ)
Формулировка задачи:
Помогите решить задачу, пожалуйста. Написал программу, чтобы она определяла перевертыш ли слово. А как проверить полностью предложение + вывести на экран эти слова не могу.
Листинг программы
- #include <conio.h>
- #include <stdio.h>
- #include <ctype.h>
- #include <locale.h>
- #include <string.h>
- main()
- {
- setlocale(LC_ALL,"Russian");
- char s[80];
- int k,i,j;
- puts("Введите строку:");
- gets(s);
- k=strlen(s);
- j=k/2;
- int f=1;
- for(i=0;i<j;i++)
- {
- if(s[i]!=s[strlen(s)-i-1])
- {
- f=0;
- break;
- }
- }
- if(f==1)
- {
- printf("полиндром");
- }
- }
Решение задачи: «Дана строка. Найти в ней все слова перевертыши»
textual
Листинг программы
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- int check_polindrom(char * s);
- int main(void)
- {
- char s[]="Prosto stroka lol lalka alla bam";
- char * string = strtok (s,",.- "); // разбиваем строку на слова и передаем слова в функцию проверки полиндрома
- while(string != '\0'){
- if(check_polindrom(string) == 1 ){
- puts(string);
- }
- string = strtok(NULL, ",.- "); // погуглите как работает strtok
- }
- return 0;
- }
- int check_polindrom(char * s){
- int k=strlen(s);
- int i,j=k/2;
- int f=1;
- for(i=0;i<j;i++)
- {
- if(s[i]!=s[strlen(s)-i-1])
- {
- f=0;
- break;
- }
- }
- if(f==1)
- {
- return 1;
- }
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы со строками иprintf
- Объявляем функцию check_polindrom, которая будет проверять слово на предмет того, является ли оно полиндромом
- В функции main создаем строку s и используем функцию strtok, чтобы разбить данную строку на слова.
- Затем мы передаем каждое слово в функцию check_polindrom, которая проверяет, является ли слово полиндромом.
- Если слово является полиндромом, мы выводим его на экран.
- В функции check_polindrom создаем переменную k, которая хранит длину строки.
- Затем мы создаем два указателя i и j, которые используются для сравнения символов в строке.
- Переменная f используется для хранения флага, который становится 0, если символы не равны, и 1 в противном случае.
- Мы используем цикл for для сравнения символов в строке.
- Если символы не равны, мы устанавливаем флаг f в 0 и выходим из цикла с помощью оператора break.
- После завершения цикла мы проверяем значение флага f. Если оно равно 1, мы возвращаем 1 из функции, иначе возвращаем 0.
- В функции main мы используем функцию strtok снова, чтобы разбить следующую строку на слова.
- Этот процесс продолжается до тех пор, пока все слова в строке не будут проверены.
- В конце функции main возвращаем 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д