Проверьте код,выдает ошибки,а как исправить их не могу - 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; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h.
- Определяются две константы: LENGTH (256) - максимальная длина строки, и DELIM (
, .?!\n
) - разделитель, используемый при разбиении строки на слова. - Определены две функции: coincidences (поиск совпадений) и identical (проверка на идентичность).
- В функции main() выделяется память под строку str, и затем считывается строка из стандартного ввода.
- Вводится символ, который нужно найти в строке.
- Строка разбивается на слова с использованием функции strtok().
- Для каждого слова проверяется, содержит ли оно три совпадения с искомым символом, и если да, то проверяется, является ли слово идентичным (начинается ли на ту же букву, на которую заканчивается).
- Если слово удовлетворяет обоим условиям, оно выводится на экран.
- В функции coincidences() ищется количество одинаковых букв в слове.
- В функции identical() проверяется, начинается ли слово на букву, на которую заканчивается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д