functions standardisees, annotees et readme en cours decriture

This commit is contained in:
hugogogo
2021-06-14 21:40:05 +02:00
parent 7a0f44c676
commit 5050e05816
17 changed files with 222 additions and 128 deletions

View File

@@ -62,35 +62,45 @@
---
# markdown rules :
# big title
## medium title
or medium title
-
### small title
#### tiny title
##### mini title
###### all caps title
**bold** *italic* [link](https://theuselessweb.com/)
1. ordoned list
2. ordoned list
3. ordoned list
- list
- list
- list
line :
---
pour utiliser l'algorithme de tris de ce programme dans votre propre programme, il faut :
1. copier le fichier algo.c
2. mettre son prototype dans votre header.h : `void hugo_sort(t_stack **a, t_stack **b, t_list **solution)`
3. mettre le fichiers dans vos srcs dans Makefile
4. et verifier que vos functions d'actions (push, swap, rotate) ont bien les meme prototypes :
- `t_list *sa(t_stack **stack, t_list **lst);`
- `t_list *ss(t_stack **a, t_stack **b, t_list **lst);`
- `t_list *pa(t_stack **dst, t_stack **src, t_list **lst);`
- `t_list *pb(t_stack **dst, t_stack **src, t_list **lst);`
- `t_list *ra(t_stack **stack, t_list **lst);`
- `t_list *rb(t_stack **stack, t_list **lst);`
- `t_list *rr(t_stack **a, t_stack **b, t_list **lst);`
- `t_list *rra(t_stack **stack, t_list **lst);`
- `t_list *rrb(t_stack **stack, t_list **lst);`
- `t_list *rrr(t_stack **a, t_stack **b, t_list **lst);`
ce programme push_swap.c s'organise de la facon suivante :
1. des fonctions pour faire fonctionner l'algorithme de tris (principalement parsing des donnees, et les actions utilisees par l'algorithme de tris : push, swap, rotate et reverse rotate) :
- push_swap.c : contient la fonction main et 4 autres fonctions :
- is_valid : verification d'erreur de parsing des listes données
- check_flag : regarde la presence des flags, pour l'instant uniquement -p pour print les etapes du tri
- init_stack : qui parse la pile a trier dans une liste chainee
- launch_algo : la fonction qui lance l'algorithme de tri, en lui envoyant ce qui est necessaire (les deux piles a et b et la liste de solutions)
- stop.c : qui gere les erreurs, l'usage, mais aussi qui free avant de fermer le programme
- ps_stop : recoit toutes les listes chainees du programme, envoyer NULL si on ne veut pas free la liste, et le dernier int permet de savoir si on veut arreter le programme (>= 0) et si on veut signaler une erreur (> 1)
- ps_error : la gestion des erreurs
- ps_usage : en cas d'erreur = 1, affiche l'usage du programme
- print.c : contient les fonctions necessaires pour afficher le resultat
- print_result : affiche le resultat, et si presence du flag -p affiche aussi les etapes de tris
- fill_solution : remplit la liste chainee solution au fur et a mesure de l'appel des fonctions push swap et rotate (pas optimisé pour raison de compatibilité avec l'appel des fonctions du programme de luke : les actions (push, swap, etc) ne recoivent pas de flag en argument, donc fill_solution remplis toutes les infos necessaires pour le flag, meme s'il n'y a pas de flag)
- toutes les fonctions d'action (push, swap, rotate, et reverse rotate)
2. les fonctions d'algorithme, qui sont appellees par launch_solution()
- hugo_sort : pour l'instant une fonction test qui utilise toutes les actions (push, swap, rotate)