Affiche la longueur moyenne de codage dans le verbeux

This commit is contained in:
Mattéo Delabre 2016-10-22 03:58:53 +02:00
parent 9840b3624f
commit 16e6a0c5ca
1 changed files with 26 additions and 18 deletions

View File

@ -22,6 +22,14 @@ static void _printVertex(HufVertex, wchar_t*, int);
*/ */
static char _safeChar(char input); static char _safeChar(char input);
void printTree(HufTree tree) {
// Allocation d'un tampon suffisamment grand pour contenir
// les indentations des sommets les plus profonds de l'arbre
wchar_t *buffer = malloc(_maxDepth(*tree.root) * 4 * sizeof(*buffer));
_printVertex(*tree.root, buffer, 0);
free(buffer);
}
void _printVertex(HufVertex vert, wchar_t *buffer, int length) { void _printVertex(HufVertex vert, wchar_t *buffer, int length) {
if (vert.child_l != NULL && vert.child_r != NULL) { if (vert.child_l != NULL && vert.child_r != NULL) {
// Affichage d'un sommet avec enfants, on montre // Affichage d'un sommet avec enfants, on montre
@ -50,7 +58,7 @@ void _printVertex(HufVertex vert, wchar_t *buffer, int length) {
} else { } else {
// Affichage d'une feuille de l'arbre, correspondant // Affichage d'une feuille de l'arbre, correspondant
// à un caractère du corpus // à un caractère du corpus
printf("%c\n", vert.character); printf("%c\n", _safeChar(vert.character));
} }
} }
@ -65,22 +73,6 @@ int _maxDepth(HufVertex vert) {
} }
} }
void printTree(HufTree tree) {
// Allocation d'un tampon suffisamment grand pour contenir
// les indentations des sommets les plus profonds de l'arbre
wchar_t *buffer = malloc(_maxDepth(*tree.root) * 4 * sizeof(*buffer));
_printVertex(*tree.root, buffer, 0);
free(buffer);
}
char _safeChar(char input) {
if (input < 32 || input == 127) {
return ' ';
}
return input;
}
void printFrequenciesTable(double* table, size_t size) { void printFrequenciesTable(double* table, size_t size) {
printf("╭─┬───┬─────────╮\n"); printf("╭─┬───┬─────────╮\n");
printf("│C│num│fréquence│\n"); printf("│C│num│fréquence│\n");
@ -105,11 +97,27 @@ void printLabelsTable(char** table, size_t size) {
printf("│C│num│ étiquette│\n"); printf("│C│num│ étiquette│\n");
printf("├─┼───┼────────────────┤\n"); printf("├─┼───┼────────────────┤\n");
double total_length = 0;
size_t label_count = 0;
for (size_t i = 0; i < size; i++) { for (size_t i = 0; i < size; i++) {
if (table[i] != 0) { if (table[i] != 0) {
printf("│%c│%3d│%16s│\n", _safeChar(i), (int) i, table[i]); printf("│%c│%3d│%16s│\n", _safeChar(i), (int) i, table[i]);
total_length += strlen(table[i]);
label_count++;
} }
} }
printf("╰─┴───┴────────────────╯\n"); printf("├─┴───┴────┬───────────┤\n");
printf("│Long. moy.│%11lf│\n", total_length / label_count);
printf("╰──────────┴───────────╯\n");
}
char _safeChar(char input) {
if (input < 32 || input == 127) {
return ' ';
}
return input;
} }