#include <unistd.h>

void	ft_swap_sp(char **a, char **b)
	//attention au double pointeur, attention a la declaration *var
{
	char	*var_temp;

	var_temp = *a;
	*a = *b;
	*b = var_temp;
}

void	ft_putstr_sp(char *str)
	// sp car + a la ligne
{
	while (*str)
		write(1, str++, 1);
	write(1, "\n", 1);
}

int	ft_strcmp(char *s1, char *s2)
	//idem a serie C02-3
{
	int	i;

	i = 0;
	while (s1[i] && s2[i] && (s1[i] == s2[i]))
		i++;
	return (s1[i] - s2[i]);
}
/*
commentaire pour sort
argument ici pour ac-1 (main) directement uniquement les entree hors prog
si 3 entree alors 3 iterations
va jusqu a 2, suffit pour le trie de 3 element (2e -1.it)
boucle len: nombre de fois que av est comparer et swap dans la prochaine boucle
-> l element le +grand est place a la fin, a chaque passage.
boucle k: k toujour +1 (element suivant), comparaison de paire adjacentes
-> 1) strcmp permet de comparer si resultat sup a 0 alros av[j] est +grand
alros vrai -> fait le swap :av[j] prend la place de av[k] est invers.
ici via echange des adresses des 2 chaines (&av[k] !!!! adresse des pn)
incrementation ++j et ++k, pour comparer et swap les paires suivantes
--len: apres chaque passage 1 element de moins a trie, car deja remonte!!!
*/

void	ft_sort_special(int argument, char **av)
{
	int	j;
	int	k;
	int	len;

	len = argument;
	while (len - 1)
	{
		j = 0;
		k = 1;
		while (k < len)
		{
			if (ft_strcmp(av[j], av[k]) > 0)
				ft_swap_sp(&av[j], &av[k]);
			++j;
			++k;
		}
		--len;
	}
}

int	main(int ac, char **av)
{
	int	i;

	i = 1;
	ft_sort_special(ac - 1, av + 1);
	while (av[i])
	{
		ft_putstr_sp(av[i]);
		i++;
	}
	return (0);
}
/*
main:
sort + et - 1: exclur programme
while: apres trie, depl. * av vers elem. suivant dans tab d arg.
*/

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: