Составить частотный словарь вводимого текста - C (СИ)
Формулировка задачи:
Составить частотный словарь вводимого текста. Распечатать его по алфавиту, а справа от каждого слова - частоту, с которой оно встретилось. помогите пожалуйста
Решение задачи: «Составить частотный словарь вводимого текста»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> struct Node { int val; const char *key; struct Node *left, *right; }; void add(struct Node **root, const char *key) { assert(root); while (*root) { int cmp = strcmp(key, (*root)->key); if (cmp == 0) { (*root)->val++; return; } if (cmp < 1) { root = &(*root)->left; } else { root = &(*root)->right; } } *root = (struct Node *) malloc(sizeof(struct Node)); if (!*root) { exit(1); } (*root)->key = key; (*root)->val = 1; (*root)->left = (*root)->right = NULL; } void print(struct Node *root) { if (root) { print(root->left); printf("%s => %d\n", root->key, root->val); print(root->right); } } int main() { const char *delim = " ,.:;!?"; struct Node *root = NULL; char *tok; char str[256]; gets(str); // да, эту функцию лучше не использовать :) tok = strtok(str, delim); while (tok) { add(&root, tok); tok = strtok(NULL, delim); } print(root); putchar('\n'); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, string.h, assert.h
- Определяется структура Node, которая содержит значения ключа и значения, а также указатели на левое и правое поддерево.
- Определяются две функции: add и print. Функция add добавляет новый узел в дерево, а функция print выводит значения всех узлов дерева в консоль.
- В функции main создается пустое корневое значение для дерева.
- Вводится строка, которую необходимо разбить на токены с использованием функции strtok.
- Для каждого токена вызывается функция add, чтобы добавить его в дерево.
- После обработки всех токенов вызывается функция print, чтобы вывести значения всех узлов дерева.
- Возвращается 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д