Построить частотный словарь слов строки и вывести их в алфавитном порядке - C (СИ)
Формулировка задачи:
С клавиатуры вводится строка. Нужно построить частотный словарь слов строки и вывести их в алфавитном порядке. Разделителями считаются пробел и табуляция.
я хочу использовать массив структур, в которых в конечном итоге будет записано слово и сколько раз оно встречается.
struct wotd{
int count;
char * w;
};
Подскажите, пожалуйста, как выделить слова)))
Решение задачи: «Построить частотный словарь слов строки и вывести их в алфавитном порядке»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> typedef struct word_t { char* string; size_t length; } TWord; //----------------------------------------------------------------------------- TWord GetWord(char* text) { char* begin = text; char* end; for (; *begin && isspace(*begin); ++begin) { ; } for (end = begin; *end && !isspace(*end); ++end) { ; } TWord word = {begin, end - begin}; return word; } //----------------------------------------------------------------------------- void PrintAllWords(char* text) { TWord word; while (*text) { word = GetWord(text); printf("%.*s\n", word.length, word.string); text += word.length + 1; } } //----------------------------------------------------------------------------- int main(int argc, const char* argv[]) { char text[] = "Other locales may consider a different" "selection of characters as white-spaces"; PrintAllWords(text); return 0; }
Объяснение кода листинга программы
Вывод списка элементов кода:
- Тип данных TWord представляет структуру слова, содержащую строку и длину строки.
- Функция GetWord() извлекает слова из текста, используя пробелы в качестве разделителей.
- Функция PrintAllWords() печатает все слова в тексте.
- В функции main() определен массив текста для обработки.
- Вызывается функция PrintAllWords() для печати всех слов в массиве текста.
- Программа завершается без ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д