[C++] Générateur de mot

Résolu/Fermé
david - 11 oct. 2007 à 09:14
 david - 11 oct. 2007 à 23:59
Bonjour,

J'ai besoin de votre aide, parce que je suis bloqué dans un petit programme en C++ qui normalement juste mais que ne me donne pas les bons résultat, ça fait quelque temps que j'essaye de trouver la solution mais rien.
Bon, le but que je veux atteindre est un programme qui génère des mots de n caractères avec ordre alphabétique ( ex: si n = 3 alors je devrai avoir comme résultat sur l'écran aaa aab aac aad...etc...)
Bon la solution bien sûr est de créer une procédure récursive avec comme paramètre d'entrée la position suivante du caractère dans le mot à générer :

...
static char used_char[26];//tableau de caractères utilisés ( de 'a' à 'z') rempli auparavant
static char word[3];
...
void genr(int j)
  {
     static int p,d;
     d=j;   
      for(p=0; p<=25; p++)
        {
          word[d]=used_char[p];
          if(d=2){word[3]='\0';printf("%s\n",word);}
                  else{ d++;genr(d);}
        }
  } 
...

J'obtiens seulement aas aab....aaz, c'est tout alors que normalement il devrait aller jusqu'à aaz.
Donc j'aimerai savoir ou est le problème?
sinon, est-ce qu'il y a une autre solution pour arriver au bon résultat?

J'ai chercher partout mais j'ai rien trouvé, vous êtes mon dernier espoir.

Merci d'avance pour votre aide
A voir également:

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
11 oct. 2007 à 15:34
Oui je comprends pas bien ce que tu veux faire.

Tu veux aller de aaa à aaz?
Ou bien de aaa à a (en couvrant tous les mots possibles de 1 à trois lettres).
Bon déjà il y a déjà un soucis:

if(d=2) c'est une affectation puis l'equivalent de if(2)
Je suppose que tu voulais faire une comparaison: if(d==2)

Ensuite pourquoi p et d sont statiques? Ca signifie que ces variables vont se comporter comme des variables globales. Les mêmes p et d seront partagés par chaque appel de genr. Tu es sûr que c'est ce que tu voulais faire?
1
Up, si vous n'avez compris ou si vous voulez me poser des questions surtout n'hésitez
0
Bonjour,

Merci e problème est résolu.

-Effectivement, la principale erreur était au niveau de:
static int p,d;

puisque j'avais besoin de variables local (variables propres à chaque itération)
int p,d;

-La deuxième était juste une erreur d'inattention (if(d==2) )

Merci Kilian de me l'avoir fais remarqué .
0