#include #include #include int main(int argc, char** argv) { // déclaration des variables char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; char pwd[100]; char first_char, current_char, next_char; int fini = 0; int i; int size_alph; int size_pwd; int position; sprintf(pwd,"%c",alphabet[0]); // password de départ first_char = alphabet[0]; size_alph = strlen(alphabet); size_pwd = strlen(pwd); while(!fini) { printf("%s\n", pwd); position = size_pwd - 1; // on place le focus sur le dernier caractère while(pwd[position] == alphabet[size_alph-1]) position--; // tant que l'on a le dernier caractère, on remonte // Si on a trop remonté, on crée un nouveau caractère car la chaine est de la forme "z", "zz", "zzz", ... if(position<0) { pwd[size_pwd] = first_char; // ajout d'un char for(i=0 ; i < size_pwd ; i++) pwd[i] = first_char; // on remet tout à zéro (inutile pour le dernier char déjà initialisé) : size_pwd += 1; // on actualise la taille pwd[size_pwd] = '\0'; } else { // sinon on incrémente le caractère sur lequel on a le focus current_char = pwd[position]; i=0; next_char = 0; // on cherche la lettre suivante dans l'alphabet while(!next_char) { if(alphabet[i] == current_char) next_char = alphabet[i+1]; i++; } pwd[position] = next_char; // on met à jour la caractère // tous les caractères qui suivent le caractère changé doivent être remis à zéro for(i=position+1 ; i < size_pwd ; i++) pwd[i] = alphabet[0]; } } return 0; }