begin process at 2012 02 10 23:42:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

generateur de mot


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

generateur de mot

lundi 5 mars 2007 à 04:39:40 | generateur de mot

tezca_system

Bonjour,
Cela fait 3 jours que je travail sur un générateur de mot. C'est de niveau débutant.
Concretement je souhaiterai que le programme genere tous les mots qui contiennent 12 caracteres maximum contenant uniquement des caracteres alphanumeriques.
il commencerait donc à "a" et finirait à "999999999999".
J'ai crée un tableu de 36 caracteres qui contient tous les caracteres à utiliser pour generer le mot:
char ref[]="abcdefghijklmnopqrstuvwxyz0123456789";
char mot[12]; <-------- le mot generé et affiché sur l'ecran.
Concretement mon pb c qu'au dessus de 2 caracteres cela m'affiche n'importe koi.
Avez vous juste une idée de l'algorythme qu'il faut que j'utilise.
Il est pas evident de faire comprendre au programme que lorsque le caractere à la position n = "9", il faut passer à "a" et incrementer la valeur du caractere à la position n+1 en fonction de sa position sur le tableau ref (definit si dessus), et pire encore le caractere à la position n+1 = "9" aussi le passer à "a" et incrementer la valeur du caractere à la position n+2 en fonction de sa position sur le tableau ref.

Si vous avez des idées se serait vraiment gentil de votre part.
merci par avance.

P.S: voici dans l'odre chronologique quelques exemples de ce que le programme devrait m'afficher comme je l'ai imaginé:
a
b
...
9
aa
...
99
aaa
baa
caa
9aa
aba
.....
89a
99a
aab
etc etc juqu'a 999999999999
lundi 5 mars 2007 à 12:27:51 | Re : generateur de mot

vinc1008881

const char *car= "\0a.....z0.....9";

Ajoute à ces caractères alphanumériques le caractère nul, il emputera naturellement ta chaine de caractères...le défaut de mon algorithme c'est qu'il prend plus de temps à générer des chaines de 12 caractères "tronquées" qui si on se préocuper de la taille de la chaine.

char *mot[13];            //12 +1 =13 oublie pas le caractère null final
mot [13]='\0';

int i0=0, i1=0, i2=0,................i11=0; //12 entiers (char au lieu de int optimiserait le temps ?)

et maintenant for () va s'averer tres utile

for (i11=0;i11 != 38;i11++) //37 c'est la "taille" de car (1 + 26 +10)
    for(i10=0;i10 != 38;i10++)
........................................................
........................................................

                         for (i0=0;i0 != 38;i0++)
                            {
                             mot[0]=char[i0];
                             ..........................  //c'est lourd mais pas de calc d'incrementation
                             mot [11] = char [i11];
                             puts (mot);
                            }

voilà ça devrait (peut-être) marcher, sinon fais des retouches ou insipre toi de l'idée car je fais des fautes qd je ponds des algo en live...

ne t'étonne pas si ton pc ramme à fond : 37^12 = 6,58295201 × 1018   à 2000 cycle CPU l'iteration par exemple...

vinc1008881


                           
                            




lundi 5 mars 2007 à 22:58:37 | Re : generateur de mot

chris91

bonsoir,


void tabcpt()
{
  char tab[] = "aaaaaaaaaaaa\r\n";
  char *p, *ps, *pe;


  pe = tab + 11;
  ps = pe;


  while(1)
  {
    // affichage chaîne ps ici (ex: puts(ps); )
    p = pe;
    while(1)
    {
      if(*p == 'z')
      {
        *p = '0';
        break;
      }

      if(*p == '9')
      {
        if(p == tab) return;
        *p-- = 'a';
        if(p < ps) ps = p;
        continue;
      }
      (*p)++;
    }
  }
}


mais attention le temps... 36^12 solutions !!
avec une chaîne de 6 chars, ça fait déjà 2176782336 solutions (>2Mds).
donc code non testé ;)
lundi 5 mars 2007 à 23:09:13 | Re : generateur de mot

chris91

avec un break; après (*p)++; ça fonctionne beaucoup mieux.


Cette discussion est classée dans : programme, mot, caractere, caracteres, position


Répondre à ce message

Sujets en rapport avec ce message

chercher la position d'un caractere [ par Johjo ] Bon, je cherche à obtenir la position d'une chaine de caractere dans une autre chaine de caractere.Mais les seuls fonctions que j'ai trouvé me renvoye Recuperer des données dans une char [ par Johjo ] JE voudrais savoir si il y a une fonction pour recuperer des données dans une chaine de caractere. Par exemple, j'ai "voiture", je voudrais recuperer Mot de passe à l'ouverture d'une BDD [ par lyricman ] Bonjourje fais un programme en C++ (Borland C++ Builder 6) avec une base de données.le pb est que chaque fois que j'exécute mon programme, il me deman Chaine de caracteres [ par youssef22 ] Bonjour,Je suis entrain d'ecrire un petit programme qui genere a chaque fois un mot, et affiche le mot sous forme de tirets, et demande a l'utilisateu Mettre une pause en VC++ [ par Goeland ] Bonjour,je cherche de l'aide car je n'arrive pas a faire une pause dans mon programme, grosso modo j'ai une edit box qui affiche un mot et je veux qu' Chaine de caracteres [ par LordBob ] Salut a tous,voila j'ai une question seulement, je ne sais pas trop comment la poser ou plutot l'expliquer... Alors, je vais faire comme je peux... al comparaison [ par sheorogath ] slt tout le monde je debute dans le c++ avec des tuto sur le net (inutile de vous dire que c'est pas facile) et je voulais savoir comment on compare d chaines de caracteres: caractere NULL [ par dletozeun ] bonjour,Je sais que lorsque l'on utilise la fonction: sprintf(), celle ci met automatiquement un caractere NULL a la fin du mot ecris dans la chaine.J Rechercher une chaine de caractere dans un fichier [ par watch_3754 ] Voila mon probleme peut paraitre simple mais moi ca devient enervant.Je voudrai pouvoir rechercher dans un fichier (qui n'est pas en forme de tableau) chercher des chaines de caracteres dans un fichier sous linux en utilisant grep [ par Davecpp ] Bijour!Kk1 pourrait m'aider(mis à part joky..) Sur comment je pourrais faire pour lancer un programme avec la commande "monGrep "chaîne à chercher" fi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales