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
.