commit 220751604afc08aa2b0154f356a21114ff3ca72f Author: Adam Joly Date: Mon Feb 12 15:27:29 2024 +0100 asdflkaj diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f02c3d0 --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/11/01 11:03:22 by adjoly #+# #+# # +# Updated: 2024/02/08 18:39:49 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +NAME = push_swap + +CC = cc + +SRCS = main.c \ + parsing.c \ + stack/ft_stackadd_back.c \ + stack/ft_stackadd_front.c \ + stack/ft_stackdelone.c \ + stack/ft_stackclear.c \ + stack/ft_stacknew.c \ + stack/ft_stacklast.c \ + stack/ft_stacksize.c \ + operations/ft_swapstack.c \ + operations/ft_pushstack.c \ + +OBJS = $(SRCS:.c=.o) + +FLAGS = -Werror -Wall -Wextra -g + +HEADERS = so_long.h + +LIB = libft/libft.a \ + +$(NAME): $(OBJS) + make -C libft + $(CC) $(FLAGS) $(OBJS) $(LIB) -o $(NAME) + +%.o: %.c + $(CC) $(FLAGS) -I $(HEADERS) $< -c -o $@ + +all: $(NAME) + +clean: + make -C libft clean + rm -f $(OBJS) + +fclean: clean + make -C libft fclean + rm -f $(NAME) + +re: fclean all + +.PHONY: clean all re fclean diff --git a/libft b/libft new file mode 160000 index 0000000..6af3df4 --- /dev/null +++ b/libft @@ -0,0 +1 @@ +Subproject commit 6af3df4973756d3db79646a4c454d6b3de735b21 diff --git a/main.c b/main.c new file mode 100644 index 0000000..028c3ca --- /dev/null +++ b/main.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/04 12:14:22 by adjoly #+# #+# */ +/* Updated: 2024/02/12 14:18:37 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int main(int ac, char **av) +{ + t_stack *stack; + t_stack *tmp; + t_stack *stack_b; + + stack = ft_parsing(ac, av); + tmp = stack; + stack_b = NULL; + while (tmp) + { + ft_printf("%d\n", tmp->nb); + tmp = tmp->next; + } + ft_push_b(&stack, &stack_b); + ft_swap_a(stack); + tmp = stack; + while (tmp) + { + ft_printf("%d\n", tmp->nb); + tmp = tmp->next; + } + ft_printf("stackb\n"); + tmp = stack_b; + while (tmp) + { + ft_printf("%d\n", tmp->nb); + tmp = tmp->next; + } + ft_stackclear(&stack); + ft_stackclear(&stack_b); + return (0); +} + diff --git a/operations/ft_pushstack.c b/operations/ft_pushstack.c new file mode 100644 index 0000000..b9c0104 --- /dev/null +++ b/operations/ft_pushstack.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_pushstack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/08 18:08:51 by adjoly #+# #+# */ +/* Updated: 2024/02/09 15:48:39 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_push_a(t_stack **stack_a, t_stack **stack_b) +{ + t_stack *tmp_a; + + ft_putendl_fd("pb", 1); + tmp_a = *stack_b; + *stack_b = (*stack_b)->next; + tmp_a->next = *stack_a; + *stack_a = tmp_a; +} + +void ft_push_b(t_stack **stack_a, t_stack **stack_b) +{ + t_stack *tmp_b; + + ft_putendl_fd("pb", 1); + tmp_b = *stack_a; + *stack_a = (*stack_a)->next; + tmp_b->next = *stack_b; + *stack_b = tmp_b; +} + diff --git a/operations/ft_swapstack.c b/operations/ft_swapstack.c new file mode 100644 index 0000000..32fe222 --- /dev/null +++ b/operations/ft_swapstack.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_swapstack.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/08 17:55:21 by adjoly #+# #+# */ +/* Updated: 2024/02/08 18:10:02 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_swapstack(t_stack *stack) +{ + int tmp; + + tmp = stack->nb; + stack->nb = stack->next->nb; + stack->next->nb = tmp; +} + +void ft_swap_a(t_stack *stack_a) +{ + ft_putendl_fd("sa", 1); + ft_swapstack(stack_a); +} + +void ft_swap_b(t_stack *stack_b) +{ + ft_putendl_fd("sb", 1); + ft_swapstack(stack_b); +} + +void ft_stack_ss(t_stack *stack_a, t_stack *stack_b) +{ + ft_putendl_fd("ss", 1); + ft_swapstack(stack_a); + ft_swapstack(stack_b); +} diff --git a/parsing.c b/parsing.c new file mode 100644 index 0000000..0192e65 --- /dev/null +++ b/parsing.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parsing.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/04 12:05:43 by adjoly #+# #+# */ +/* Updated: 2024/02/08 17:41:41 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ft_freearr(char **arr) +{ + size_t i; + + i = 0; + while (arr[i]) + { + free(arr[i]); + i++; + } + free(arr); +} + +t_stack *ft_parsing(int ac, char **av) +{ + t_stack *parsed_data; + char **tmp_split; + size_t i; + + i = 0; + (void)ac; + av++; + parsed_data = NULL; + while (*av) + { + i = 0; + tmp_split = ft_split(*av, ' '); + while (tmp_split[i]) + { + ft_stackadd_back(&parsed_data, ft_stacknew(ft_atoi(tmp_split[i]))); + i++; + } + ft_freearr(tmp_split); + av++; + } + return (parsed_data); +} diff --git a/push_swap.h b/push_swap.h new file mode 100644 index 0000000..7d354c7 --- /dev/null +++ b/push_swap.h @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push_swap.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/04 12:18:29 by adjoly #+# #+# */ +/* Updated: 2024/02/09 15:49:14 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PUSH_SWAP_H +# define PUSH_SWAP_H + +typedef struct s_stack +{ + int nb; + struct s_stack *next; +} t_stack; + +#include "libft/libft.h" + +t_stack *ft_parsing(int ac, char **av); + +void ft_stackadd_back(t_stack **stack, t_stack *new); +void ft_stackadd_front(t_stack **stack, t_stack *new); +void ft_stackclear(t_stack **stack); +void ft_stackdelone(t_stack *stack); +t_stack *ft_stacklast(t_stack *stack); +t_stack *ft_stacknew(int content); +size_t ft_stacksize(t_stack *stack); + +void ft_swap_a(t_stack *stack_a); +void ft_swap_b(t_stack *stack_b); +void ft_stack_ss(t_stack *stack_a, t_stack *stack_b); + +void ft_push_a(t_stack **stack_a, t_stack **stack_b); +void ft_push_b(t_stack **stack_a, t_stack **stack_b); +#endif diff --git a/push_swap_tuto.c b/push_swap_tuto.c new file mode 100644 index 0000000..c5b5913 --- /dev/null +++ b/push_swap_tuto.c @@ -0,0 +1,178 @@ +#include +#include + +typedef struct s_stack +{ + int nb_init; + int nb; + struct s_stack *next; +} t_stack; + +t_stack *ft_stacknew(int content) +{ + /* creer avec malloc(), un maillon avec comme nb_init -> content*/ + t_stack *new; + + new = malloc(sizeof(t_stack)); + return (NULL); +} + +int ft_stacksize(t_stack *stack) +{ + /*donne la taille d'une t_stack*/ + return (0); +} + +void ft_stackadd_back(t_stack **stack, t_stack *new) +{ + /* ajoute a la fin de stack -> new*/ + return ; +} + +t_stack *ft_stacklast(t_stack *stack) +{ + /* renvoie le dernier maillon*/ + return (NULL); +} + +void ft_stackadd_front(t_stack **stack, t_stack *new) +{ + /* ajoute au debut de stack -> new*/ + return ; +} + +int ft_verif_nb(char const *str) +{ + /*verifie que un str est un nombre valable, + qu'il passe dans atoi, + et qu'il ne depasse pas les limites des int*/ + + /*renvoie un booléen si le nb est + valide(1) + invalide (0)*/ + return (0); +} + +t_stack *fill_struct(int ac, char **av) +{ + /*remplie la structure avec les élements de av + -> il faut split chaque av + "3 2" "1 10" "5" -> 3 2 1 10 5 + et verifier que chaque nb passe dans atoi + + puis utiliser atoi pour remplir la structure choisit + + si un nb est invalide, ne pas oublier de free, et renvoyer NULL*/ +} + +int verif_double(t_stack *stack) +{ + /*verifie si la liste ne contient aucun doublons*/ + + /*renvoie un booléen si la liste est + bonne (aucun doublons) -> (1) + pas bonne (1 ou plusieurs doublons) -> (0)*/ + return (0); +} + +//j'espere que le debut étais pas trop dur car voici un premier gros defi +// tu dois "lisser" toutes les valeur, a partir de 0, et il n'y aura pas d'ecart superieur a 1 +// pour ca tu va assiger a chaque maillon->nb une valeur +// qui depend de toute les nb_init de la list +// 0 1000 2 2000 -> 0 2 1 3 +// -4 1 9 5 2 8 4 -> 0 1 6 4 2 5 3 +// une vision simple de le voir/le coder: +//compter combien d'element dans toute la liste possede un nb_init en dessous du nb_init conserner +void replace_nb_init(t_stack *stack) +{ + /*assigne pour chaque maillon, un nb, + ce nb est la possition finale dans la liste trier qu'il aura*/ +} + + + +// mtn que tu a modifier tous et simplifier les nb_init dans nb +// a partir de mtn tu ne touche plus du tout a nb_init, +// uniquement a nb + +int is_sorted(t_stack *stack_a) +{ + /*verifie si la liste est trier*/ + + /*renvoie un booléen si la liste est + trier(1) + pas trier(0)*/ + return (0); +} + + + +// il va falloir attendre la v2 pour les tests des fonctions a partir de mtn +//, et pour les explications plus soffistiquer de la sutie:) +// mais tu peux quand meme les faire sans aide ? :) + +void sa(t_stack *stack_a) +{ + /*echange les 2 elements en haut de la pile + print "sa"*/ +} + +void sb(t_stack *stack_b) +{ + /*echange les 2 elements en haut de la pile + print "sb"*/ +} + +void ss(t_stack *stack_a, t_stack *stack_b) +{ + /*effectue sa et sb + print "ss"*/ +} + +void pa(t_stack *stack_a, t_stack *stack_b) +{ + /*envoie l'element en haut de la pile b -> en haut de la pile a + print "pa"*/ +} + +void pb(t_stack *stack_a, t_stack *stack_b) +{ + /*envoie l'element en haut de la pile a -> en haut de la pile b + print "pb"*/ +} + +void ra(t_stack *stack_a) +{ + /*envoie l'element en haut de la pile a -> en bas de la pile a + print "ra"*/ +} + +void rb(t_stack *stack_b) +{ + /*envoie l'element en haut de la pile b -> en bas de la pile b + print "rb"*/ +} + +void rr(t_stack *stack_a, t_stack *stack_b) +{ + /*effectue ra et rb + print "rr"*/ +} + +void rra(t_stack *stack_a) +{ + /*envoie l'element en bas de la pile a -> en haut de la pile a + print "rra"*/ +} + +void rrb(t_stack *stack_b) +{ + /*envoie l'element en bas de la pile b -> en haut de la pile b + print "rrb"*/ +} + +void rrr(t_stack *stack_a, t_stack *stack_b) +{ + /*effectue rra et rrb + print "rrr"*/ +} diff --git a/stack/ft_stackadd_back.c b/stack/ft_stackadd_back.c new file mode 100644 index 0000000..7f87d9e --- /dev/null +++ b/stack/ft_stackadd_back.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stackadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/05 11:40:39 by adjoly #+# #+# */ +/* Updated: 2024/02/05 11:42:15 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_stackadd_back(t_stack **stack, t_stack *new) +{ + if (!stack) + return ; + if (!*stack) + { + (*stack) = new; + return ; + } + ft_stacklast(*stack)->next = new; +} + diff --git a/stack/ft_stackadd_front.c b/stack/ft_stackadd_front.c new file mode 100644 index 0000000..8ea451f --- /dev/null +++ b/stack/ft_stackadd_front.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stackadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/04 18:52:38 by adjoly #+# #+# */ +/* Updated: 2024/02/05 11:38:54 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_stackadd_front(t_stack **stack, t_stack *new) +{ + if (!stack) + return ; + if (!new) + return ; + new->next = *stack; + *stack = new; +} + diff --git a/stack/ft_stackclear.c b/stack/ft_stackclear.c new file mode 100644 index 0000000..5e427ca --- /dev/null +++ b/stack/ft_stackclear.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stackclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/04 18:54:56 by adjoly #+# #+# */ +/* Updated: 2024/02/05 11:39:22 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_stackclear(t_stack **stack) +{ + t_stack *tmp; + + tmp = NULL; + while (stack && *stack) + { + tmp = (*stack)->next; + ft_stackdelone(*stack); + *stack = tmp; + } +} + diff --git a/stack/ft_stackdelone.c b/stack/ft_stackdelone.c new file mode 100644 index 0000000..16addc5 --- /dev/null +++ b/stack/ft_stackdelone.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stackdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/06 10:27:14 by adjoly #+# #+# */ +/* Updated: 2024/02/06 10:28:24 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +void ft_stackdelone(t_stack *stack) +{ + if (stack == NULL) + return ; + free(stack); +} + diff --git a/stack/ft_stacklast.c b/stack/ft_stacklast.c new file mode 100644 index 0000000..91a7572 --- /dev/null +++ b/stack/ft_stacklast.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stacklast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/06 10:18:01 by adjoly #+# #+# */ +/* Updated: 2024/02/08 16:24:36 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +t_stack *ft_stacklast(t_stack *stack) +{ + t_stack *tmp; + + if (!stack) + return (NULL); + tmp = stack; + while (tmp->next) + tmp = tmp->next; + return (tmp); + +} + diff --git a/stack/ft_stacknew.c b/stack/ft_stacknew.c new file mode 100644 index 0000000..6fac30a --- /dev/null +++ b/stack/ft_stacknew.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stacknew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/05 11:45:19 by adjoly #+# #+# */ +/* Updated: 2024/02/05 14:11:46 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +t_stack *ft_stacknew(int nb) +{ + t_stack *stack; + + stack = malloc(sizeof(t_stack)); + if (!stack) + return (NULL); + stack->nb = nb; + stack->next = NULL; + return (stack); +} + diff --git a/stack/ft_stacksize.c b/stack/ft_stacksize.c new file mode 100644 index 0000000..179eb2f --- /dev/null +++ b/stack/ft_stacksize.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_stacksize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/02/05 11:42:40 by adjoly #+# #+# */ +/* Updated: 2024/02/05 11:44:21 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../push_swap.h" + +size_t ft_stacksize(t_stack *stack) +{ + size_t i; + + i = 0; + while (stack) + { + stack = stack->next; + i++; + } + return (i); +} + diff --git a/verif/verif_all.c b/verif/verif_all.c new file mode 100644 index 0000000..4f1427e --- /dev/null +++ b/verif/verif_all.c @@ -0,0 +1,237 @@ +#include +#include + +void afficher_KO_OK(int i) +{ + if (i == 1) + printf("ok "); + else + printf("ERREUR "); +} + +/* si tu modif un prototype de fonction: modif la aussi*/ +typedef struct s_stack +{ + int nb_init; + int nb; + struct s_stack *next; +} t_stack; + +t_stack *ft_stacknew(int content); +int ft_stacksize(t_stack *stack); +void ft_stackadd_back(t_stack **stack, t_stack *new); +t_stack *ft_stacklast(t_stack *stack); +void ft_stackadd_front(t_stack **stack, t_stack *new); + +int ft_verif_nb(char const *str); +t_stack *fill_struct(int ac, char **av); +int verif_double(t_stack *stack); +void replace_nb_init(t_stack *stack); +int is_sorted(t_stack *stack_a); + + + +void main_stacknew() +{ + printf("stacknew: "); + t_stack *new = ft_stacknew(1000); + afficher_KO_OK(new->nb_init == 1000); + afficher_KO_OK(new->next == NULL); + printf("\n"); +} + +void main_stacksize() +{ + printf("stacksize: "); + t_stack *new = ft_stacknew(1000); + afficher_KO_OK(ft_stacksize(new) == 1); + t_stack *new2 = ft_stacknew(1); + new->next = new2; + afficher_KO_OK(ft_stacksize(new) == 2); + afficher_KO_OK(ft_stacksize(NULL) == 0); + printf("\n"); +} + +void main_stackadd_back() +{ + printf("stackadd_back: "); + t_stack *new = ft_stacknew(1000); + t_stack *new2 = ft_stacknew(1); + t_stack *new3 = ft_stacknew(2); + ft_stackadd_back(&new, new2); + ft_stackadd_back(&new, new3); + afficher_KO_OK(ft_stacksize(new) == 3); + afficher_KO_OK(new->nb_init == 1000); + afficher_KO_OK(new->next->nb_init == 1); + afficher_KO_OK(new->next->next->nb_init == 2); + printf("\n"); +} + +void main_stacklast() +{ + printf("stacklast: "); + t_stack *new = ft_stacknew(1000); + t_stack *new2 = ft_stacknew(1); + t_stack *new3 = ft_stacknew(2); + new2->next = new3; + new->next = new2; + afficher_KO_OK(ft_stacklast(new)->nb_init == 2); + afficher_KO_OK(ft_stacklast(new)->next == NULL); + t_stack *new4 = ft_stacknew(6); + new3->next = new4; + afficher_KO_OK(ft_stacklast(new)->nb_init == 6); + afficher_KO_OK(ft_stacklast(new)->next == NULL); + afficher_KO_OK(ft_stacklast(new2)->nb_init == 6); + afficher_KO_OK(ft_stacklast(new2)->next == NULL); + printf("\n"); +} + +void main_stackadd_front() +{ + printf("stackadd_front: "); + t_stack *new = ft_stacknew(1000); + t_stack *new2 = ft_stacknew(1); + t_stack *new3 = ft_stacknew(2); + ft_stackadd_front(&new, new2); + ft_stackadd_front(&new, new3); + afficher_KO_OK(ft_stacksize(new) == 3); + afficher_KO_OK(new->nb_init == 2); + afficher_KO_OK(new->next->nb_init == 1); + afficher_KO_OK(new->next->next->nb_init == 1000); + printf("\n"); +} + +void main_stack() +{ + main_stacknew(); + main_stacksize(); + main_stackadd_back(); + main_stacklast(); + main_stackadd_front(); +} + +void main_verif_nb() +{ + printf("verif_nb: "); + afficher_KO_OK(ft_verif_nb("0") == 1); + afficher_KO_OK(ft_verif_nb("1000") == 1); + afficher_KO_OK(ft_verif_nb("-1000") == 1); + afficher_KO_OK(ft_verif_nb("2147483647") == 1); + afficher_KO_OK(ft_verif_nb("2147483648") == 0); + afficher_KO_OK(ft_verif_nb("-2147483648") == 1); + afficher_KO_OK(ft_verif_nb("-2147483649") == 0); + afficher_KO_OK(ft_verif_nb("1234567890123456") == 0); + printf("\n"); +} + +void main_fill_struct() +{ + int ac = 4; + char **av = (char *[]){"1 2 3", "4 5 6","7 8 9" "10"}; + t_stack *stack = fill_struct(ac, av); + afficher_KO_OK(ft_stacksize(stack) == 10); + afficher_KO_OK(stack->nb_init == 1 && + stack->next->nb_init == 2 && + stack->next->next->nb_init == 3 && + stack->next->next->next->nb_init == 4 && + stack->next->next->next->next->next->nb_init == 5 && + stack->next->next->next->next->next->next->nb_init == 6 && + ft_stacklast(stack)->nb_init == 10); + + ac = 1; + av = (char *[]){"1 2 3 4 5 6 7 8 9 10"}; + stack = fill_struct(ac, av); + afficher_KO_OK(ft_stacksize(stack) == 10); + afficher_KO_OK(stack->nb_init == 1 && + stack->next->nb_init == 2 && + stack->next->next->nb_init == 3 && + stack->next->next->next->nb_init == 4 && + stack->next->next->next->next->next->nb_init == 5 && + stack->next->next->next->next->next->next->nb_init == 6 && + ft_stacklast(stack)->nb_init == 10); + + ac = 10; + av = (char *[]){"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + stack = fill_struct(ac, av); + afficher_KO_OK(ft_stacksize(stack) == 10); + afficher_KO_OK(stack->nb_init == 1 && + stack->next->nb_init == 2 && + stack->next->next->nb_init == 3 && + stack->next->next->next->nb_init == 4 && + stack->next->next->next->next->next->nb_init == 5 && + stack->next->next->next->next->next->next->nb_init == 6 && + ft_stacklast(stack)->nb_init == 10); + + ac = 10; + av = (char *[]){"1", "2", "3", "4", "5", "6", "7", "8", "9", "2147483648"}; + stack = fill_struct(ac, av); + afficher_KO_OK(stack == NULL); +} + +void main_verif_double() +{ + printf("verif_double: "); + t_stack *new = ft_stacknew(0); + t_stack *new2 = ft_stacknew(1); + t_stack *new3 = ft_stacknew(3); + new2->next = new3; + new->next = new2; + afficher_KO_OK(verif_double(new2) == 1); + afficher_KO_OK(verif_double(new) == 1); + t_stack *new4 = ft_stacknew(0); + new3->next = new4; + afficher_KO_OK(is_sorted(new) == 0); + new->nb_init = -1; + afficher_KO_OK(is_sorted(new) == 0); + printf("\n"); +} + +void main_replace_nb_init() +{ + printf("verif_double: "); + t_stack *new = ft_stacknew(1000); + t_stack *new2 = ft_stacknew(1); + t_stack *new3 = ft_stacknew(20000); + new2->next = new3; + new->next = new2; + replace_nb_init(new); + afficher_KO_OK(new->nb == 1 && new->next->nb == 0 && new->next->next->nb == 2); + t_stack *new4 = ft_stacknew(0); + new3->next = new4; + replace_nb_init(new); + afficher_KO_OK(new->nb == 2 && new->next->nb == 1 && new->next->next->nb == 3 && new->next->next->next->nb == 0); + printf("\n"); +} + +void main_is_sorted() +{ + printf("stackis_sorted: "); + t_stack *new = ft_stacknew(1000); + new->nb = 1000; + t_stack *new2 = ft_stacknew(1); + new2->nb = 1; + t_stack *new3 = ft_stacknew(3); + new3->nb = 3; + new2->next = new3; + new->next = new2; + afficher_KO_OK(is_sorted(new2) == 1); + afficher_KO_OK(is_sorted(new) == 0); + t_stack *new4 = ft_stacknew(2); + new4->nb = 2; + new3->next = new4; + new->nb = 0; + afficher_KO_OK(is_sorted(new) == 0); + new4->nb = 6; + afficher_KO_OK(is_sorted(new) == 1); + printf("\n"); +} + +int main() +{ + main_stack(); + main_verif_nb(); + main_fill_struct(); + main_is_sorted(); + main_verif_double(); + main_replace_nb_init(); +} \ No newline at end of file