From 69dc80e498b3a4b5878d73e0a50ad533553dc3f8 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 11:35:23 +0100 Subject: [PATCH] fix my medium algo --- algorithms/medium/utils_medium.c | 12 ++++++++---- algorithms/medium/utils_medium_two.c | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/algorithms/medium/utils_medium.c b/algorithms/medium/utils_medium.c index c9307a6..80f68de 100644 --- a/algorithms/medium/utils_medium.c +++ b/algorithms/medium/utils_medium.c @@ -16,11 +16,14 @@ int get_first_lower(t_stack *first) { t_stack *tmp; int lower; + int pass; tmp = first; lower = tmp->value; - while (tmp->next != first) + pass = 1; + while (tmp != first || pass == 1) { + pass = 0; if (lower > tmp->value) lower = tmp->value; tmp = tmp->next; @@ -85,17 +88,18 @@ int get_number_in_range(int max_range, t_stack *a, int range) int nb_in; t_stack *tmp; t_stack *first; + int pass; nb_in = 0; tmp = a; + pass = 1; first = tmp; - while (tmp->next != first) + while (tmp != first || pass == 1) { + pass = 0; if (in_range(tmp->value, max_range, range)) nb_in++; tmp = tmp->next; } - if (in_range(tmp->value, max_range, range)) - nb_in++; return (nb_in); } diff --git a/algorithms/medium/utils_medium_two.c b/algorithms/medium/utils_medium_two.c index 70d91ed..167566a 100644 --- a/algorithms/medium/utils_medium_two.c +++ b/algorithms/medium/utils_medium_two.c @@ -16,12 +16,15 @@ static int get_max_number(t_stack *first) { int max; + int pass; t_stack *a; a = first; max = a->value; - while (a->next != first) + pass = 1; + while (a!= first || pass == 1) { + pass = 0; if (max < a->value) max = a->value; a = a->next; @@ -33,13 +36,17 @@ static int get_min_number(t_stack *first) { int min; t_stack *a; + int pass; a = first; min = a->value; - while (a->next != first) + pass = 1; + while (a != first || pass == 1) { + pass = 0; if (min > a->value) min = a->value; + a = a->next; } return (min); @@ -59,16 +66,16 @@ static int my_sqrt(int nb) int range_bucket(t_stack *first) { - int len; - int diff; - int sqrt; + int len; + long diff; + int sqrt; len = stack_len(first); - diff = get_max_number(first) - get_min_number(first); + diff = (long)get_max_number(first) - (long)get_min_number(first); sqrt = my_sqrt(len); if (diff / sqrt < 2) { return (get_max_number(first)); } - return ((get_max_number(first) - get_min_number(first)) / my_sqrt(len)); + return (diff / my_sqrt(len)); }