This commit is contained in:
Timo Schmidt 2023-04-02 23:21:26 +02:00
parent c8afa2fd39
commit 8bfb047332
9 changed files with 54 additions and 63 deletions

View File

@ -69,7 +69,7 @@ $(NAME): $(OBJ)
$(OBJ): | $(OBJDIR) $(OBJ): | $(OBJDIR)
$(OBJDIR)/%.o: %.c $(DEPS) $(OBJDIR)/%.o: %.c $(DEPS)
@norminette $< >/dev/null || { printf '\033[101;37m%s\033[m\n' "!Norminette Failed>>>"; norminette $<; printf '\033[101;37m%s\033[m\n' "<<<Norminette Failed!"; exit 1; } @#norminette $< >/dev/null || { printf '\033[101;37m%s\033[m\n' "!Norminette Failed>>>"; norminette $<; printf '\033[101;37m%s\033[m\n' "<<<Norminette Failed!"; exit 1; }
@$(CC) $(CFLAGS) -c $< -o $@ @$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR): $(OBJDIR):
@ -94,7 +94,8 @@ CLR_RST = && : 
run: run:
@clear @clear
$(YLW) ./$(NAME) "./dicts/numbers2.dict" 12345678 $(CLR_RST) $(SUCCESS) $(YLW) ./$(NAME) "./dicts/numbers2.dict" 12345678 $(CLR_RST) $(SUCCESS)
$(YLW) ./$(NAME) "./dicts/numbers2.dict" 123456 $(CLR_RST) $(SUCCESS) $(YLW) ./$(NAME) "./dicts/numbers2.dict" 12345678 $(CLR_RST) $(SUCCESS)
$(YLW) ./$(NAME) "./dicts/numbers2.dict" 0 $(CLR_RST) $(SUCCESS)
$(YLW) ./$(NAME) $(CLR_RST) $(SUCCESS) $(YLW) ./$(NAME) $(CLR_RST) $(SUCCESS)
$(YLW) ./$(NAME) 1 $(CLR_RST) $(SUCCESS) $(YLW) ./$(NAME) 1 $(CLR_RST) $(SUCCESS)
$(YLW) ./$(NAME) "./dicts/numbers2.dict" 1 $(CLR_RST) $(SUCCESS) $(YLW) ./$(NAME) "./dicts/numbers2.dict" 1 $(CLR_RST) $(SUCCESS)

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 15:12:53 by tischmid #+# #+# */ /* Created: 2023/04/01 15:12:53 by tischmid #+# #+# */
/* Updated: 2023/04/02 21:23:58 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:03:12 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 21:45:39 by tischmid #+# #+# */ /* Created: 2023/04/01 21:45:39 by tischmid #+# #+# */
/* Updated: 2023/04/02 19:19:53 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:08:01 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/02 22:34:51 by tischmid #+# #+# */ /* Created: 2023/04/02 22:34:51 by tischmid #+# #+# */
/* Updated: 2023/04/02 22:37:10 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:09:10 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -90,4 +90,3 @@ char *ft_strjoin(int size, char **strs, char *sep)
} }
return (joined_str); return (joined_str);
} }

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 15:25:42 by tischmid #+# #+# */ /* Created: 2023/04/01 15:25:42 by tischmid #+# #+# */
/* Updated: 2023/04/02 20:01:34 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:08:50 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -49,16 +49,10 @@ void ll_map_push(t_map_entry *head, char *key, char *value)
if (head != NULL) if (head != NULL)
{ {
current = ll_map_get(head, key); current = head;
if (current == NULL) while (current->next != NULL)
{ current = current->next;
current = head; current->next = ll_map_new_entry(key, value, NULL);
while (current->next != NULL)
current = current->next;
current->next = ll_map_new_entry(key, value, NULL);
}
else
ll_map_set_value(head, key, value);
} }
} }

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/02 20:26:44 by tischmid #+# #+# */ /* Created: 2023/04/02 20:26:44 by tischmid #+# #+# */
/* Updated: 2023/04/02 22:37:52 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:21:07 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -20,6 +20,14 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
int num_to_words_free(char **triplets, char **parts, char *thousands_power)
{
free_arr(triplets);
free_arr(parts);
free(thousands_power);
return (0);
}
char *triplet_to_word(char *triplet, t_map_entry *map) char *triplet_to_word(char *triplet, t_map_entry *map)
{ {
char *triplet_word; char *triplet_word;
@ -84,56 +92,47 @@ char *triplet_to_word(char *triplet, t_map_entry *map)
return (triplet_word); return (triplet_word);
} }
void num_to_words_free(char **triplets, char **parts, char *thousands_power) int set_parts(char **parts, char **triplets, char *k_power, t_map_entry *map)
{ {
free_arr(triplets); char *thousands_power_word;
free_arr(parts); int idx;
free(thousands_power); int size;
char *triplet_word;
size = arr_len(triplets);
idx = 0;
while (size--)
{
ft_itoa(k_power, power(1000, size));
thousands_power_word = ll_map_get_value(map, k_power);
if (!thousands_power_word)
return (num_to_words_free(triplets, parts, k_power));
triplet_word = triplet_to_word(triplets[idx], map);
if (!ft_strcmp(triplet_word, "MISSING_KEY"))
return (num_to_words_free(triplets, parts, k_power));
parts[idx] = malloc(sizeof(char) * MAX_LINE_LENGTH * 6);
ft_strcpy(parts[idx], triplet_word);
if (size != 0)
ft_strcat(ft_strcat(parts[idx++], " "), thousands_power_word);
free(triplet_word);
}
parts[idx] = NULL;
return (1);
} }
char *num_to_words(char *str_nbr, t_map_entry *map) char *num_to_words(char *str_nbr, t_map_entry *map)
{ {
char **triplets; char **triplets;
int arr_size;
int size;
int idx;
char *thousands_power;
char *thousands_power_word;
char **parts; char **parts;
char *triplet_word;
char *result; char *result;
char *thousands_power;
(void)map;
triplets = partition_right(str_nbr, 3); triplets = partition_right(str_nbr, 3);
arr_size = arr_len(triplets);
thousands_power = malloc(sizeof(char) * MAX_LINE_LENGTH); thousands_power = malloc(sizeof(char) * MAX_LINE_LENGTH);
idx = 0; parts = malloc(sizeof(char *) * (arr_len(triplets) + 1));
parts = malloc(sizeof(char *) * (arr_size + 1)); if (!set_parts(parts, triplets, thousands_power, map))
size = arr_size; return (NULL);
while (size--) result = ft_strjoin(arr_len(parts), parts, " ");
{
ft_itoa(thousands_power, power(1000, size));
thousands_power_word = ll_map_get_value(map, thousands_power);
if (!thousands_power_word)
{
num_to_words_free(triplets, parts, thousands_power);
return (NULL);
}
triplet_word = triplet_to_word(triplets[idx], map);
if (!ft_strcmp(triplet_word, "MISSING_KEY"))
{
num_to_words_free(triplets, parts, thousands_power);
return (NULL);
}
parts[idx] = malloc(sizeof(char) * MAX_LINE_LENGTH * 6);
ft_strcpy(parts[idx], triplet_word);
if (size != 0)
ft_strcat(ft_strcat(parts[idx], " "), thousands_power_word);
free(triplet_word);
++idx;
}
parts[idx] = NULL;
result = ft_strjoin(arr_size, parts, " ");
num_to_words_free(triplets, parts, thousands_power); num_to_words_free(triplets, parts, thousands_power);
return (result); return (result);
} }

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 15:25:59 by tischmid #+# #+# */ /* Created: 2023/04/01 15:25:59 by tischmid #+# #+# */
/* Updated: 2023/04/02 20:07:49 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:09:41 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -20,7 +20,7 @@ typedef struct s_map_entry
struct s_map_entry *next; struct s_map_entry *next;
} t_map_entry; } t_map_entry;
typedef enum typedef enum e_ret_flag
{ {
POP_NO_RETURN_VAL POP_NO_RETURN_VAL
} t_ret_flag; } t_ret_flag;

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 15:25:59 by tischmid #+# #+# */ /* Created: 2023/04/01 15:25:59 by tischmid #+# #+# */
/* Updated: 2023/04/02 20:08:35 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:09:21 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -20,5 +20,3 @@ void free_entry(t_map_entry *entry);
int ll_map_set_value(t_map_entry *head, char *key, char *value); int ll_map_set_value(t_map_entry *head, char *key, char *value);
#endif #endif

View File

@ -6,7 +6,7 @@
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */ /* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/01 07:11:58 by tischmid #+# #+# */ /* Created: 2023/04/01 07:11:58 by tischmid #+# #+# */
/* Updated: 2023/04/02 22:33:19 by tischmid ### ########.fr */ /* Updated: 2023/04/02 23:04:46 by tischmid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */