Correction de la position des étoiles de pointeurs
This commit is contained in:
		
							parent
							
								
									f7378d4707
								
							
						
					
					
						commit
						c0de61b95a
					
				|  | @ -9,7 +9,7 @@ | |||
|  * Écrire sur la sortie standard à la manière de printf, | ||||
|  * seulement si le mode verbeux est actif | ||||
|  */ | ||||
| void printVerbose(const char *format, ...); | ||||
| void printVerbose(const char* format, ...); | ||||
| 
 | ||||
| /**
 | ||||
|  * Active ou désactive l'affichage des messages verbeux | ||||
|  |  | |||
|  | @ -3,6 +3,6 @@ | |||
| 
 | ||||
| #include "huftree.h" | ||||
| 
 | ||||
| void compress(const char *filepath); | ||||
| void compress(const char* filepath); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -21,7 +21,8 @@ struct HufVertex { | |||
|     // Pointeurs vers les deux enfants de ce sommet. Ils valent tous
 | ||||
|     // deux NULL si le sommet est une feuille. À noter qu'un sommet
 | ||||
|     // a toujours 0 ou 2 enfants car un arbre de Huffman est binaire
 | ||||
|     HufVertex *child_l, *child_r; | ||||
|     HufVertex* child_l; | ||||
|     HufVertex* child_r; | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -30,7 +31,7 @@ struct HufVertex { | |||
| typedef struct HufTree HufTree; | ||||
| struct HufTree { | ||||
|     // Pointeur sur la racine de l'arbre
 | ||||
|     HufVertex *root; | ||||
|     HufVertex* root; | ||||
| 
 | ||||
|     // Quantité de sommets dans l'arbre
 | ||||
|     size_t size; | ||||
|  | @ -42,7 +43,7 @@ struct HufTree { | |||
|  * | ||||
|  * (résultat à libérer avec `freeTree`) | ||||
|  */ | ||||
| HufTree createTree(double *frequencies); | ||||
| HufTree createTree(double* frequencies); | ||||
| 
 | ||||
| /**
 | ||||
|  * Libérer la mémoire occupée par un arbre de Huffman | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| 
 | ||||
| static int is_verbose = FALSE; | ||||
| 
 | ||||
| void printVerbose(const char *format, ...) { | ||||
| void printVerbose(const char* format, ...) { | ||||
|     if (is_verbose) { | ||||
|         va_list args_list; | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,8 +14,8 @@ | |||
|  */ | ||||
| static double* _createFrequencies(const char*); | ||||
| 
 | ||||
| double* _createFrequencies(const char *filepath) { | ||||
|     double *frequencies = malloc(NUM_CHARS * sizeof(*frequencies)); | ||||
| double* _createFrequencies(const char* filepath) { | ||||
|     double* frequencies = malloc(NUM_CHARS * sizeof(*frequencies)); | ||||
|     int totalChars = 0; | ||||
| 
 | ||||
|     for (size_t i = 0; i < NUM_CHARS; i++) { | ||||
|  | @ -25,7 +25,7 @@ double* _createFrequencies(const char *filepath) { | |||
|     // Ouverture du fichier en lecture seule, et comptage
 | ||||
|     // des occurences de chaque caractère ASCII ainsi que
 | ||||
|     // du nombre total de caractères
 | ||||
|     FILE *file = fopen(filepath, "r"); | ||||
|     FILE* file = fopen(filepath, "r"); | ||||
| 
 | ||||
|     if (file == NULL) { | ||||
|         fprintf( | ||||
|  | @ -53,9 +53,9 @@ double* _createFrequencies(const char *filepath) { | |||
|     return frequencies; | ||||
| } | ||||
| 
 | ||||
| void compress(const char *filepath) { | ||||
| void compress(const char* filepath) { | ||||
|     printVerbose("Calcul des fréquences d'apparition de chaque caractère\n"); | ||||
|     double *frequencies = _createFrequencies(filepath); | ||||
|     double* frequencies = _createFrequencies(filepath); | ||||
| 
 | ||||
|     if (isVerbose()) { | ||||
|         printFrequenciesTable(frequencies, NUM_CHARS); | ||||
|  |  | |||
|  | @ -25,12 +25,12 @@ 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)); | ||||
|     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) { | ||||
|         // Affichage d'un sommet avec enfants, on montre
 | ||||
|         // la probabilité somme des enfants
 | ||||
|  |  | |||
|  | @ -44,7 +44,7 @@ HufTree createTree(double* frequencies) { | |||
|     // Allocation d'un tableau de `leaves_count` pointeurs vers sommets.
 | ||||
|     // Initialement, ce tableau contient les feuilles du futur arbre.
 | ||||
|     // Chaque feuille correspond à un caractère du corpus original
 | ||||
|     HufVertex **remaining = malloc(leaves_count * sizeof(*remaining)); | ||||
|     HufVertex** remaining = malloc(leaves_count * sizeof(*remaining)); | ||||
|     size_t next_index = 0; | ||||
| 
 | ||||
|     for (size_t i = 0; i < NUM_CHARS; i++) { | ||||
|  | @ -77,11 +77,11 @@ HufTree createTree(double* frequencies) { | |||
|             &min_vert_index, &sec_min_vert_index | ||||
|         ); | ||||
| 
 | ||||
|         HufVertex *min_vert = remaining[min_vert_index]; | ||||
|         HufVertex *sec_min_vert = remaining[sec_min_vert_index]; | ||||
|         HufVertex* min_vert = remaining[min_vert_index]; | ||||
|         HufVertex* sec_min_vert = remaining[sec_min_vert_index]; | ||||
| 
 | ||||
|         // Création d'un sommet parent P pour A et B
 | ||||
|         HufVertex *parent = malloc(sizeof(*parent)); | ||||
|         HufVertex* parent = malloc(sizeof(*parent)); | ||||
| 
 | ||||
|         parent->frequency = min_vert->frequency + sec_min_vert->frequency; | ||||
|         parent->child_l = min_vert; | ||||
|  | @ -110,8 +110,8 @@ HufTree createTree(double* frequencies) { | |||
| } | ||||
| 
 | ||||
| void _findMinimalVertices( | ||||
|     HufVertex **vertices, size_t size, | ||||
|     size_t *min_index, size_t *sec_min_index | ||||
|     HufVertex** vertices, size_t size, | ||||
|     size_t* min_index, size_t* sec_min_index | ||||
| ) { | ||||
|     // Initialisation de telle sorte qu'initialement
 | ||||
|     // on ait `freq(min_index) < freq(sec_min_index)`
 | ||||
|  | @ -144,7 +144,7 @@ void freeTree(HufTree tree) { | |||
|     tree.root = NULL; | ||||
| } | ||||
| 
 | ||||
| void _freeTreeVertex(HufVertex *vert) { | ||||
| void _freeTreeVertex(HufVertex* vert) { | ||||
|     if (vert->child_l != NULL && vert->child_r != NULL) { | ||||
|         _freeTreeVertex(vert->child_l); | ||||
|         _freeTreeVertex(vert->child_r); | ||||
|  |  | |||
|  | @ -24,15 +24,15 @@ static struct argp_option options[] = { | |||
|  */ | ||||
| typedef struct Args { | ||||
|     int verbose; | ||||
|     char **files; | ||||
|     char** files; | ||||
| } Args; | ||||
| 
 | ||||
| /**
 | ||||
|  * Fonction de rappel pour interpréter les arguments | ||||
|  * passés au programme | ||||
|  */ | ||||
| static error_t parse_opt(int key, char *arg, struct argp_state *state) { | ||||
|     Args *args = state->input; | ||||
| static error_t parse_opt(int key, char* arg, struct argp_state* state) { | ||||
|     Args* args = state->input; | ||||
| 
 | ||||
|     switch (key) { | ||||
|         case 'V': | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue