Поиск слов по критериям - C (СИ)
Формулировка задачи:
Не могу понять как осуществлять данный поиск предположил вот такой вот код, но что то не катит...
Помогите плз.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/**
3.2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими).
Найти количество слов, которые начинаются и заканчиваются одной и той же буквой.
**/
int len(char *str);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char *str=(char*)malloc(100*sizeof(char));
printf("Напишите строку, состоящую из слов разделенных пробелами: ");
gets(str);
printf("Колличесвто слов,\nначинающихся с одной и той же буквы = %d",len(str));
return 0;
}
int len (char *str)
{
int k=0;
char x;
while (*str)
{
x=*str;
while (*str!=' ')
str++;
if (x==*str)
k++;
str++;
}
return k;
}Решение задачи: «Поиск слов по критериям»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
char str[80], *w, word[30];
int len, n = 0;
printf("Input string:\n");
gets(str);
w = strtok(str, " ");
while(w != NULL){
strcpy(word, w);
len = strlen(word);
if(word[0] == word[len - 1]){
n++;
puts(word);
}
w = strtok(NULL, " ");
}
printf("%d", n);
return 0;
}
Объяснение кода листинга программы
В этом коде осуществляется поиск слов в строке по следующим критериям:
- Слово должно быть отделено от других слов пробелами.
- Уникальные слова, то есть слова, которые встречаются в строке только один раз, выводятся на экран.
- Выводится количество найденных уникальных слов. Список действий:
- Ввод строки с помощью функции
gets(). - Выделение первого слова в строке с помощью функции
strtok(). - Пока не будет найден нулевой указатель (что означает окончание строки), продолжается выполнение следующих действий:
- Копирование текущего слова в буфер
word. - Вычисление длины слова с помощью функции
strlen(). - Проверка, является ли первое и последнее символы слова одинаковыми (если они одинаковы, это означает, что это уникальное слово).
- Если слово уникальное, его выводят на экран с помощью функции
puts(), и увеличивают счетчик уникальных слов на 1.
- Копирование текущего слова в буфер
- После окончания цикла, выводится количество найденных уникальных слов с помощью функции
printf()и возвращается 0, что означает успешное завершение программы.