61 lines
1.9 KiB
C
61 lines
1.9 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* main.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2024/09/12 19:13:52 by lfirmin #+# #+# */
|
|
/* Updated: 2024/11/03 19:40:43 by lfirmin ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
#include "../include/pushswap.h"
|
|
|
|
int fill_stack(t_stack *stack_a, char **av)
|
|
{
|
|
int i;
|
|
int num;
|
|
|
|
i = 0;
|
|
while (av[i])
|
|
{
|
|
if (ft_atoll(av[i]) > 2147483647)
|
|
return (ft_printf_fd(2, "Error\n"), 0);
|
|
num = ft_atoll(av[i]);
|
|
if (valid_input(av[i]) == 0 && num <= INT_MAX && num >= INT_MIN \
|
|
&& in_stack(stack_a, (int)num) == 0)
|
|
{
|
|
add_stack(stack_a, (int)num);
|
|
i++;
|
|
}
|
|
else
|
|
return (0);
|
|
}
|
|
return (1);
|
|
}
|
|
|
|
int main(int ac, char **av)
|
|
{
|
|
t_stack *stack_a;
|
|
t_stack *stack_b;
|
|
char **av_pars;
|
|
|
|
if (ac < 2)
|
|
return (0);
|
|
stack_a = init_stack();
|
|
stack_b = init_stack();
|
|
if (!stack_a || !stack_b)
|
|
return (1);
|
|
av_pars = pars(av);
|
|
if (!av_pars)
|
|
return (ft_printf_fd(1, "error\n"), 1);
|
|
if (!fill_stack(stack_a, av_pars))
|
|
return (free_stack(stack_a), free_stack(stack_b), \
|
|
free_array(av_pars), 1);
|
|
if (is_sorted(stack_a) == 1)
|
|
return (free_stack(stack_a), free_stack(stack_b), \
|
|
free_array(av_pars), 1);
|
|
sort(stack_a, stack_b);
|
|
return (free_stack(stack_a), free_stack(stack_b), free_array(av_pars), 0);
|
|
}
|