Correction d'un bug avec le fichier tous les caractères

(Stockage du nom avec un entier au lieu d'un char)
This commit is contained in:
Mattéo Delabre 2016-10-27 18:47:08 +02:00
parent 07b9a19930
commit 69f64a3fc5
3 changed files with 7 additions and 7 deletions

View File

@ -16,8 +16,8 @@ struct HufVertex {
// Caractère du corpus original associé à ce sommet. Uniquement // Caractère du corpus original associé à ce sommet. Uniquement
// valable pour les feuilles. Pour les autres sommets, la valeur // valable pour les feuilles. Pour les autres sommets, la valeur
// de (character) n'est pas garantie // de `name` n'est pas garantie
char character; int name;
// Pointeurs vers les deux enfants de ce sommet. Ils valent tous // Pointeurs vers les deux enfants de ce sommet. Ils valent tous
// deux NULL si le sommet est une feuille. À noter qu'un sommet // deux NULL si le sommet est une feuille. À noter qu'un sommet

View File

@ -58,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", _safeChar(vert.character)); printf("%c\n", _safeChar(vert.name));
} }
} }

View File

@ -54,12 +54,12 @@ HufTree createTree(double* frequencies) {
HufVertex** remaining = malloc(leaves_count * sizeof(*remaining)); HufVertex** remaining = malloc(leaves_count * sizeof(*remaining));
size_t next_index = 0; size_t next_index = 0;
for (size_t i = 0; i < NUM_CHARS; i++) { for (int i = 0; i < NUM_CHARS; i++) {
if (frequencies[i] > 0) { if (frequencies[i] > 0) {
remaining[next_index] = malloc(sizeof(*remaining[next_index])); remaining[next_index] = malloc(sizeof(*remaining[next_index]));
remaining[next_index]->name = i;
remaining[next_index]->frequency = frequencies[i]; remaining[next_index]->frequency = frequencies[i];
remaining[next_index]->character = (char) i;
remaining[next_index]->child_l = NULL; remaining[next_index]->child_l = NULL;
remaining[next_index]->child_r = NULL; remaining[next_index]->child_r = NULL;
@ -174,7 +174,7 @@ void _writeVertex(HufVertex vertex, Buffer* buffer) {
pushToBuffer( pushToBuffer(
// Écriture du n-ième bit du caractère du fils // Écriture du n-ième bit du caractère du fils
// dans le tampon // dans le tampon
(vertex.character & (1 << i)) != 0, (vertex.name & (1 << i)) != 0,
buffer buffer
); );
} }
@ -245,7 +245,7 @@ void _labelVertex(HufVertex vertex, char** labels, char* label, size_t length) {
} else { } else {
// Si le sommet est une feuille, étiquetage du caractère // Si le sommet est une feuille, étiquetage du caractère
// associé avec l'étiquette passée en paramètre. Fin de la récursion // associé avec l'étiquette passée en paramètre. Fin de la récursion
labels[(size_t) vertex.character] = label; labels[vertex.name] = label;
} }
} }