Affiche la longueur moyenne de codage dans le verbeux
This commit is contained in:
parent
9840b3624f
commit
16e6a0c5ca
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue