#include #include #include // affiche tous les nombres binaires sur nb_bits bits void enumeration_nombres_binaires(int nb_bits); void enumeration_binaire_rec(int *nbre_binaire, int indice, int nb_bits); void afficher_nombre_binaire(int *nbre_binaire, int nb_bits); int main(int argc, char *argv[]) { // ameliorations : verifier que le programme a un argument, usage ... enumeration_nombres_binaires(atoi(argv[1])); return EXIT_SUCCESS; } void enumeration_nombres_binaires(int nb_bits) { int *nbre_binaire = malloc(nb_bits * sizeof(int)); assert(nbre_binaire != NULL); enumeration_binaire_rec(nbre_binaire, 0, nb_bits); } void enumeration_binaire_rec(int *nbre_binaire, int indice, int nb_bits) { if (indice == nb_bits) { afficher_nombre_binaire(nbre_binaire, nb_bits); return; } nbre_binaire[indice] = 0; enumeration_binaire_rec(nbre_binaire, indice+1, nb_bits); nbre_binaire[indice] = 1; enumeration_binaire_rec(nbre_binaire, indice+1, nb_bits); } void afficher_nombre_binaire(int *nbre_binaire, int nb_bits) { for (int i = 0; i < nb_bits; i++) printf("%d", nbre_binaire[i]); putchar('\n'); }