Syracuse

Variation sur le thème de la suite de Syracuse.

Un élément

Créez une fonction qui rend le nombre d'étapes nécessaire pour arriver à 1 pour la suite de Syracuse d'un entier passé en paramètre. Sa signature doit être :

int syracuse_nb(int nombre);

Si le nombre passé en paramètre est plus petit ou égal à 1, la fonction doit rendre 0.

Demandez à l'utilisateur de rentrer un entier relatif (vous utiliserez la fonction scanf)dont vous donnerez le nombre de syracuse.

Tous les éléments

Créez une fonction (et testez la) qui rend tous les éléments de la suite de suite de Syracuse d'un entier passé en paramètre. Sa signature doit être :

int *syracuse_tab(int nombre);

Si le nombre passé en paramètre est est plus petit ou égal à 1, la fonction doit rendre le pointeur NULL.

Paramètres d'exécutables

Créez un programme syracuse qui prend un entier en paramètre et rend la liste des éléments de sa suite de syracuse. Il faudra appeler le programme avec un paramètre, par exemple : syracuse 20.

Vous devrez certainement utiliser la fonction atoi qui transforme une chaîne de caractères en entier.

Faites également en sorte que si le programme n'a pas exactement un paramètre ou que son paramètre ne corresponde pas à un entier strictement positif le programme s'arrête.

Cerise sur le gateau

Utilisez maintenant la fonction getopt définie dans <unistd.h> pour ajouter une option facultative -n qui rend, en plus de la liste de syracuse, le nombre d'élément en premier. On pourra appeler syracuse de deux manières : syracuse 20 ou syracuse -n 20.