Archived
1
0

started redo error check parsing

This commit is contained in:
2024-03-14 16:18:42 +01:00
parent 909c57eec1
commit 59eaf01b9d
32 changed files with 111 additions and 111 deletions

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/21 17:29:26 by adjoly #+# #+# */
/* Updated: 2024/03/11 16:06:26 by adjoly ### ########.fr */
/* Updated: 2024/03/12 15:37:38 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -49,9 +49,13 @@ void ft_algo(t_stack **stack_a, t_stack **stack_b)
}
if (ft_stacksize(*stack_a) == 3)
{
sort_three(stack_a);
return ;
}
if (ft_stacksize(*stack_a) == 5)
{
sort_five(stack_a, stack_b);
return ;
}
send_to_stack_b(stack_a, stack_b);
while_insert(stack_a, stack_b);

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/23 14:49:14 by adjoly #+# #+# */
/* Updated: 2024/03/11 16:03:14 by adjoly ### ########.fr */
/* Updated: 2024/03/12 14:42:06 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -14,8 +14,6 @@
void prepare_to_send_a(t_stack **stack_b, size_t lowest_cost_b)
{
size_t i;
if (lowest_cost_b < (ft_stacksize(*stack_b) / 2))
{
while (stack_b && *stack_b && lowest_cost_b > 0)
@ -26,7 +24,6 @@ void prepare_to_send_a(t_stack **stack_b, size_t lowest_cost_b)
}
else
{
i = 0;
while (stack_b && *stack_b && lowest_cost_b < ft_stacksize(*stack_b))
{
ft_reverserotate_b(stack_b);

View File

@ -6,16 +6,58 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/11 16:12:47 by adjoly #+# #+# */
/* Updated: 2024/03/11 16:24:11 by adjoly ### ########.fr */
/* Updated: 2024/03/12 17:20:50 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "../push_swap.h"
#include <sys/types.h>
void sort_three(t_stack **stack_a)
void sort_three(t_stack **stack_a)
{
if ((*stack_a)->nb > (*stack_a)->next->nb)
ft_swap_a(*stack_a);
if (get_stack_max(stack_a) == 2)
ft_swap_a(*stack_a);
else if (get_stack_max(stack_a) == 2 || get_stack_max(stack_a) == 0)
ft_rotatestack_a(stack_a);
else if (get_stack_max(stack_a) == 1)
ft_reverserotate_a(stack_a);
if (ft_is_sort(stack_a) == FALSE)
sort_three(stack_a);
}
void push_min_to_b(t_stack **stack_a, t_stack **stack_b)
{
size_t i_min;
size_t i;
i_min = get_stack_min(stack_a);
if (i_min < (ft_stacksize(*stack_a) / 2))
{
while (i_min > 0)
{
ft_rotatestack_a(stack_a);
i_min--;
}
}
else
{
i = ft_stacksize(*stack_a);
while (i_min < i)
{
ft_reverserotate_a(stack_a);
i_min++;
}
}
ft_push_b(stack_a, stack_b);
}
void sort_five(t_stack **stack_a, t_stack **stack_b)
{
push_min_to_b(stack_a, stack_b);
push_min_to_b(stack_a, stack_b);
sort_three(stack_a);
ft_push_a(stack_a, stack_b);
ft_push_a(stack_a, stack_b);
if (ft_is_sort(stack_a) == FALSE)
ft_swap_a(*stack_a);
}

View File

@ -1,60 +0,0 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* check_error.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/15 13:45:25 by adjoly #+# #+# */
/* Updated: 2024/03/11 15:56:15 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void ft_check_args_format(char **av)
{
char **tmp;
char *tmp_av;
tmp = av;
tmp++;
while (*tmp)
{
tmp_av = *tmp;
while (*tmp_av)
{
if (!ft_isdigit(*tmp_av) && *tmp_av != 32 \
&& *tmp_av != '-' && *tmp_av != '+')
{
ft_putendl_fd("Error", STDERR_FILENO);
exit(EXIT_SUCCESS);
}
tmp_av++;
}
tmp++;
}
}
void ft_check_double(t_stack **stack)
{
t_stack *index;
t_stack *tmp;
index = *stack;
while (index)
{
tmp = index->next;
while (tmp)
{
if (index->nb == tmp->nb)
{
ft_stackclear(stack);
ft_putendl_fd("Error", STDERR_FILENO);
exit(EXIT_FAILURE);
}
tmp = tmp->next;
}
index = index->next;
}
}

View File

@ -6,70 +6,78 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/04 12:14:22 by adjoly #+# #+# */
/* Updated: 2024/03/08 14:17:09 by adjoly ### ########.fr */
/* Updated: 2024/03/13 14:44:42 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void ft_check_args(char **av)
void check_invalid_char(char **av)
{
char **tmp;
char *tmp_av;
char *tmp_args;
tmp = av;
tmp++;
while (*tmp)
{
tmp_av = *tmp;
while (*tmp_av)
tmp_args = *tmp;
while (*tmp_args)
{
if ((*tmp_av == '+' || *tmp_av == '-'))
{
if (!ft_isdigit(*tmp_av + 1))
{
ft_putendl_fd("Error", STDERR_FILENO);
exit(EXIT_FAILURE);
}
else
{
while (!*tmp_av && ft_isdigit(*tmp_av))
tmp_av++;
}
}
tmp_av++;
if (!ft_isdigit(*tmp_args) && *tmp_args != '-' && *tmp_args != '+' && *tmp_args != 32)
ft_senderror();
tmp_args++;
}
tmp++;
}
}
void check_double(t_stack **stack)
{
t_stack *tmp;
t_stack *check_dup;
tmp = *stack;
while (tmp)
{
check_dup = tmp->next;
while (check_dup)
{
if (check_dup->nb == tmp->nb)
{
ft_stackclear(stack);
ft_senderror();
}
check_dup = check_dup->next;
}
tmp = tmp->next;
}
}
int main(int ac, char **av)
{
t_stack *stack_a;
t_stack *stack_b;
if (ac < 2)
{
ft_putendl_fd("Error", STDERR_FILENO);
exit(EXIT_FAILURE);
}
ft_check_args_format(av);
ft_check_args(av);
return (EXIT_SUCCESS);
check_invalid_char(av);
stack_b = NULL;
stack_a = ft_parsing(av);
if (ft_stacksize(stack_a) <= 1)
{
ft_stackclear(&stack_a);
exit(EXIT_SUCCESS);
return (EXIT_SUCCESS);
}
if (ft_is_sort(&stack_a) == TRUE)
{
ft_stackclear(&stack_a);
exit(EXIT_SUCCESS);
return (EXIT_SUCCESS);
}
ft_check_double(&stack_a);
check_double(&stack_a);
ft_algo(&stack_a, &stack_b);
ft_stackclear(&stack_a);
ft_stackclear(&stack_b);
return (0);
return (EXIT_SUCCESS);
}

View File

@ -1,8 +1,8 @@
1 2 3 nope
1 3 2 sa ra
1 2 3
3 2 1 ra ra
3 2 1 sa rra
3 1 2 ra
2 1 3 sa
2 3 1 rra
1 3 2 rra sa
3 1 2 ra
2 1 3 sa

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/04 12:05:43 by adjoly #+# #+# */
/* Updated: 2024/03/11 15:58:28 by adjoly ### ########.fr */
/* Updated: 2024/03/13 13:05:17 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/04 12:18:29 by adjoly #+# #+# */
/* Updated: 2024/03/11 16:07:50 by adjoly ### ########.fr */
/* Updated: 2024/03/13 14:35:19 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -55,15 +55,15 @@ void while_insert(t_stack **stack_a, t_stack **stack_b);
size_t get_lowest_cost(t_stack **stack_a, t_stack **stack_b);
t_boolean ft_is_sort(t_stack **stack);
int find_q_one(t_stack **stack);
void sort_three(t_stack **stack_a);
void sort_five(t_stack **stack_a, t_stack **stack_b);
// get_min_max
size_t get_stack_max(t_stack **stack);
size_t get_stack_min(t_stack **stack);
// error checkin
void ft_check_args_format(char **av);
t_stack *ft_parsing(char **av);
void ft_check_double(t_stack **stack);
void ft_print_stack(t_stack *stack);
// utils