Projects/1BIT/summer-semester/IJC-2/wordcount.c
2026-04-14 19:28:46 +02:00

49 lines
No EOL
1.3 KiB
C

// wordcount.c
// Řešení IJC-DU2, příklad b), 22.4.2024
// Autor: Roman Nečas, FIT
// Přeloženo: gcc 11.4.0
#include <stdio.h>
#include "htab.h"
#include "io.h"
#include "htab_struct.h"
#define MAX_WORD_LEN 255
#define HTAB_SIZE 130003 //program som testoval napriklad na prikaze seq 100000 200000|shuf, teda 100 0000 slov, velkost by mala byt 1.3
//nasobok a zaroven prvocislo, teda najblizsie cislo je 130003
static void print_pair(htab_pair_t *pair) {
printf("%s\t%d\n", pair->key, pair->value);
}
int main() {
htab_t *t = htab_init(HTAB_SIZE);
if (t == NULL) {
fprintf(stderr, "Chyba: Nedostatok pamati pre tabulku\n");
return 1;
}
char word[MAX_WORD_LEN];
int ret;
while ((ret = read_word(word, sizeof(word), stdin)) != EOF) {
if (ret == MAX_WORD_LEN) {
fprintf(stderr, "Varovanie: Niektore slova boli skratene na 255 znakov.\n");
}
htab_pair_t *pair = htab_lookup_add(t, word);
if (pair == NULL) {
fprintf(stderr, "Chyba: Nedostatok pamati pre novy zaznam\n");
htab_free(t);
return 1;
}
pair->value++;
}
htab_for_each(t, print_pair);
#ifdef STATISTICS
htab_statistics(t);
#endif
htab_free(t);
return 0;
}