Проверьте код,выдает ошибки,а как исправить их не могу - 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
#include <iostream>
#include <string>
#include <sstream>
#include <string.h>
#include <stdio.h>
 
int  cnt(char text,char ch)
 {
    int res = 0;
    for (; text; ++text) {
        res += (text == 'k');
    }
    return res;
}

int main()
{
    char text[256], *p;
 
    fgets(text, sizeof(text), stdin);
 
    p = strtok(text, " ");
    while (p)
    {
        if ((p[0] == p[p.length()-1]) && (3==(int cnt(text,'k'))))
        {
            printf("%s\n", p);
        }
        p = strtok(NULL, " ");
    }
 
    return 0;
}

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define LENGTH 256
#define DELIM  " ,.?!\n"
 
int coincidences(char *, char);
int identical(char *);
 
 
int main(void)
{
    char* str = (char *)malloc( sizeof(char) * LENGTH );
    printf("Enter a string: ");
    fgets(str, LENGTH, stdin);
    
    char letter;
    printf("Enter a character we will find: ");
    scanf("%c", &letter);
    
    char* word = strtok(str, DELIM);
    while(word)
    {
        if (coincidences(word, letter) == 3)
            if (identical(word))
                printf ("%s\n", word);
                
        word = strtok(NULL, DELIM);
    }
 
    return 0;
}
 
int coincidences(char* str, char letter)
/*
  Ищет кол-во одинаковых букв (letter) в слове (str)
  Возвращает кол-во совпадений
*/
{
    if (!str) return 0;
    
    int count = 0;
 
    while (*str)
        if (*str++ == letter) ++count;
 
    return count;
}
 
int identical(char* str)
// Проверяет, начинается ли слово на букву, на которую заканчивается
{
    if (!str) return 0;
    if (!*str) return 0;
    if ( !*(str + 1) ) return 0;
 
    char firstLetter = *str;
    
    while (*++str);
    if ( tolower(*--str) == tolower(firstLetter) ) return 1;
    
    return 0;
}

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

  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
Похожие ответы