Compare commits
2 commits
afb38673ea
...
31dcab5853
Author | SHA1 | Date | |
---|---|---|---|
31dcab5853 | |||
eb0b69bef4 |
2 changed files with 22 additions and 5 deletions
|
@ -14,7 +14,6 @@
|
||||||
* caractère nul.
|
* caractère nul.
|
||||||
* - La chaîne de caractère contient forcément des caractères non-nuls.
|
* - La chaîne de caractère contient forcément des caractères non-nuls.
|
||||||
*/
|
*/
|
||||||
/*
|
|
||||||
static char parse_digit(char *line, Node *digits_tree) {
|
static char parse_digit(char *line, Node *digits_tree) {
|
||||||
if (isdigit(line[0])) {
|
if (isdigit(line[0])) {
|
||||||
return line[0];
|
return line[0];
|
||||||
|
@ -22,7 +21,6 @@ static char parse_digit(char *line, Node *digits_tree) {
|
||||||
return Node_stringToDigit(digits_tree, line);
|
return Node_stringToDigit(digits_tree, line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lire tous les caractères d'une ligne :
|
* Lire tous les caractères d'une ligne :
|
||||||
|
@ -30,12 +28,16 @@ static char parse_digit(char *line, Node *digits_tree) {
|
||||||
* - Si aucun chiffre n'a été trouvé, retourner 0
|
* - Si aucun chiffre n'a été trouvé, retourner 0
|
||||||
*/
|
*/
|
||||||
static char first_digit(char *line) {
|
static char first_digit(char *line) {
|
||||||
while (line[0] != '\0' && !isdigit(line[0])) {
|
char current_digit = '\0';
|
||||||
|
Node *digits_tree = Node_new('\0');
|
||||||
|
|
||||||
|
while (line[0] != '\0' && !isdigit(current_digit)) {
|
||||||
|
current_digit = parse_digit(line, digits_tree);
|
||||||
line++;
|
line++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*line != '\0') {
|
if (current_digit != '\0') {
|
||||||
return *line;
|
return current_digit;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -45,16 +47,20 @@ unsigned int get_calibration_sum(FILE *input_file) {
|
||||||
unsigned int sum = 0;
|
unsigned int sum = 0;
|
||||||
char *current_line, *reversed_line;
|
char *current_line, *reversed_line;
|
||||||
char intermediate_buffer[3];
|
char intermediate_buffer[3];
|
||||||
|
|
||||||
intermediate_buffer[2] = '\0';
|
intermediate_buffer[2] = '\0';
|
||||||
|
|
||||||
while (!feof(input_file)) {
|
while (!feof(input_file)) {
|
||||||
current_line = read_line(input_file);
|
current_line = read_line(input_file);
|
||||||
reversed_line = strrev(current_line);
|
reversed_line = strrev(current_line);
|
||||||
|
|
||||||
if (*current_line != '\0') {
|
if (*current_line != '\0') {
|
||||||
intermediate_buffer[0] = first_digit(current_line);
|
intermediate_buffer[0] = first_digit(current_line);
|
||||||
intermediate_buffer[1] = first_digit(reversed_line);
|
intermediate_buffer[1] = first_digit(reversed_line);
|
||||||
|
|
||||||
sum += atoi(intermediate_buffer);
|
sum += atoi(intermediate_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(reversed_line);
|
free(reversed_line);
|
||||||
free(current_line);
|
free(current_line);
|
||||||
}
|
}
|
||||||
|
|
11
src/node.c
11
src/node.c
|
@ -86,3 +86,14 @@ void Node_printTree(Node *root_node) {
|
||||||
print_node(root_node, 0);
|
print_node(root_node, 0);
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transformer une chaîne de caractères en un chiffre à l'aide d'un arbre
|
||||||
|
* n-aire
|
||||||
|
*/
|
||||||
|
char Node_stringToDigit(Node *root_node, char *string) {
|
||||||
|
(void) root_node;
|
||||||
|
(void) string;
|
||||||
|
|
||||||
|
return '\0';
|
||||||
|
}
|
||||||
|
|
Reference in a new issue