Дана строка. Найти в ней все слова перевертыши - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите решить задачу, пожалуйста. Написал программу, чтобы она определяла перевертыш ли слово. А как проверить полностью предложение + вывести на экран эти слова не могу.
Листинг программы
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. #include <locale.h>
  5. #include <string.h>
  6. main()
  7. {
  8. setlocale(LC_ALL,"Russian");
  9. char s[80];
  10. int k,i,j;
  11. puts("Введите строку:");
  12. gets(s);
  13.  
  14. k=strlen(s);
  15. j=k/2;
  16. int f=1;
  17. for(i=0;i<j;i++)
  18. {
  19. if(s[i]!=s[strlen(s)-i-1])
  20. {
  21. f=0;
  22. break;
  23. }
  24. }
  25. if(f==1)
  26. {
  27. printf("полиндром");
  28. }
  29. }

Решение задачи: «Дана строка. Найти в ней все слова перевертыши»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int check_polindrom(char * s);
  6.  
  7. int main(void)
  8. {
  9.     char s[]="Prosto stroka lol lalka alla bam";
  10.     char * string = strtok (s,",.- "); // разбиваем строку на слова и передаем слова в функцию проверки полиндрома
  11.     while(string != '\0'){
  12.         if(check_polindrom(string) == 1 ){
  13.             puts(string);
  14.         }
  15.         string = strtok(NULL, ",.- "); // погуглите как работает strtok
  16.     }
  17.  
  18.  return 0;
  19. }
  20.  
  21. int check_polindrom(char * s){
  22.     int k=strlen(s);
  23.  
  24.     int i,j=k/2;
  25.     int f=1;
  26.     for(i=0;i<j;i++)
  27.     {
  28.         if(s[i]!=s[strlen(s)-i-1])
  29.         {
  30.             f=0;
  31.             break;
  32.         }
  33.     }
  34.     if(f==1)
  35.     {
  36.         return 1;
  37.     }
  38.  return 0;
  39. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы со строками иprintf
  2. Объявляем функцию check_polindrom, которая будет проверять слово на предмет того, является ли оно полиндромом
  3. В функции main создаем строку s и используем функцию strtok, чтобы разбить данную строку на слова.
  4. Затем мы передаем каждое слово в функцию check_polindrom, которая проверяет, является ли слово полиндромом.
  5. Если слово является полиндромом, мы выводим его на экран.
  6. В функции check_polindrom создаем переменную k, которая хранит длину строки.
  7. Затем мы создаем два указателя i и j, которые используются для сравнения символов в строке.
  8. Переменная f используется для хранения флага, который становится 0, если символы не равны, и 1 в противном случае.
  9. Мы используем цикл for для сравнения символов в строке.
  10. Если символы не равны, мы устанавливаем флаг f в 0 и выходим из цикла с помощью оператора break.
  11. После завершения цикла мы проверяем значение флага f. Если оно равно 1, мы возвращаем 1 из функции, иначе возвращаем 0.
  12. В функции main мы используем функцию strtok снова, чтобы разбить следующую строку на слова.
  13. Этот процесс продолжается до тех пор, пока все слова в строке не будут проверены.
  14. В конце функции main возвращаем 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы