Print_combn

bibop1611 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je voudrais écrire une fonction qui affiche toutes les différentes combinaisons de n chiffres dans l'ordre croissant.
* n sera tel que : 0 < n < 10.
* Si n = 2, cela donne quelque chose comme ça :
01, 02, 03, ..., 09, 12, ..., 79, 89
* Le prototype de la fonction doit être :
void print_combn(int n);

Alors j'ai penser comme logique :

calculer v valeur maximum du nombre traité suivant n (ex pour n = 3 v = 999)

boucler de 0 à v

construire une chaine c de n caractères à partir de la valeur en cours (valeur justifiée à droite remplie de 0 à gauche si nécessaire)

parcourir c et tester que les caractères sont croissants

si c'est le cas afficher c


J'ai donc commencer à écrire ça comme bout de code mais je n'arrive pas à continuer ...


void print_combn(int n)
{
int vmax = 10;
int i = 1;

while (i < n)
{
vmax *= 10;
i++;
}
i = 1;
while (i < vmax)
{
char tab[n];

i++;
}
}

Voilà, so help plz !!! :3

ps : la seule fonction que j'ai le droit d'utiliser est putchar.

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ah dommage pour putchar().
Tu pouvais faire sinon une boucle for de 1 à v et n'afficher que les nombres respectant la condition (croissance des chiffres).
Sinon dans ton programme :
char tab[n];
Je ne te conseille pas. Cela marche en C99 mais pas pour les raisons que tu penses et cela risque d'être considéré comme faux par ton prof. Il faut passer par l'allocation dynamique (malloc/calloc) et utiliser le free qui va bien.

Niveau algorithmique, tu peux faire plus simple.
Je te mets sur la piste.
Il te faut n boucles for.
Pour la 1ère, tu fais de 0 à 9 (variable i) et tu affiches i
Pour la 2nde, tu fais de i à 9 (variable j) et tu affiches j
Pour la 3ème, tu fais de j à 0 (variable k) et tu affiches k
...

Reste à trouver l'astuce pour les n boucles for, pour les variables i,j,k (indice : tableau).

N'hésite pas à poster ton programme pour qu'on te corrige après avoir pris en compte ce post.

Courage.
0