Проверьте код,выдает ошибки,а как исправить их не могу - C (СИ)

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

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

Суть в том,что надо проверь слова из строки на условия: 1)начало и конец слова начинается на одну и ту же букву 2)слово содержит 3 буквы к ошибки: 1) [Error] request for member 'length' in 'p', which is of non-class type 'char*' 2 )26строка expected primary-expression before 'int' 3)26строка expected ')' before 'int' 4) 30строка expected ')' before 'p' 5)30строка expected ')' before ';' token
Листинг программы
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <string.h>
  5. #include <stdio.h>
  6. int cnt(char text,char ch)
  7. {
  8. int res = 0;
  9. for (; text; ++text) {
  10. res += (text == 'k');
  11. }
  12. return res;
  13. }
  14.  
  15. int main()
  16. {
  17. char text[256], *p;
  18. fgets(text, sizeof(text), stdin);
  19. p = strtok(text, " ");
  20. while (p)
  21. {
  22. if ((p[0] == p[p.length()-1]) && (3==(int cnt(text,'k'))))
  23. {
  24. printf("%s\n", p);
  25. }
  26. p = strtok(NULL, " ");
  27. }
  28. return 0;
  29. }

Решение задачи: «Проверьте код,выдает ошибки,а как исправить их не могу»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define LENGTH 256
  5. #define DELIM  " ,.?!\n"
  6.  
  7. int coincidences(char *, char);
  8. int identical(char *);
  9.  
  10.  
  11. int main(void)
  12. {
  13.     char* str = (char *)malloc( sizeof(char) * LENGTH );
  14.     printf("Enter a string: ");
  15.     fgets(str, LENGTH, stdin);
  16.    
  17.     char letter;
  18.     printf("Enter a character we will find: ");
  19.     scanf("%c", &letter);
  20.    
  21.     char* word = strtok(str, DELIM);
  22.     while(word)
  23.     {
  24.         if (coincidences(word, letter) == 3)
  25.             if (identical(word))
  26.                 printf ("%s\n", word);
  27.                
  28.         word = strtok(NULL, DELIM);
  29.     }
  30.  
  31.     return 0;
  32. }
  33.  
  34. int coincidences(char* str, char letter)
  35. /*
  36.   Ищет кол-во одинаковых букв (letter) в слове (str)
  37.   Возвращает кол-во совпадений
  38. */
  39. {
  40.     if (!str) return 0;
  41.    
  42.     int count = 0;
  43.  
  44.     while (*str)
  45.         if (*str++ == letter) ++count;
  46.  
  47.     return count;
  48. }
  49.  
  50. int identical(char* str)
  51. // Проверяет, начинается ли слово на букву, на которую заканчивается
  52. {
  53.     if (!str) return 0;
  54.     if (!*str) return 0;
  55.     if ( !*(str + 1) ) return 0;
  56.  
  57.     char firstLetter = *str;
  58.    
  59.     while (*++str);
  60.     if ( tolower(*--str) == tolower(firstLetter) ) return 1;
  61.    
  62.     return 0;
  63. }

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

  1. Включаются заголовочные файлы stdio.h и stdlib.h.
  2. Определяются две константы: LENGTH (256) - максимальная длина строки, и DELIM (, .?!\n) - разделитель, используемый при разбиении строки на слова.
  3. Определены две функции: coincidences (поиск совпадений) и identical (проверка на идентичность).
  4. В функции main() выделяется память под строку str, и затем считывается строка из стандартного ввода.
  5. Вводится символ, который нужно найти в строке.
  6. Строка разбивается на слова с использованием функции strtok().
  7. Для каждого слова проверяется, содержит ли оно три совпадения с искомым символом, и если да, то проверяется, является ли слово идентичным (начинается ли на ту же букву, на которую заканчивается).
  8. Если слово удовлетворяет обоим условиям, оно выводится на экран.
  9. В функции coincidences() ищется количество одинаковых букв в слове.
  10. В функции identical() проверяется, начинается ли слово на букву, на которую заканчивается.

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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