Résultats de 1 à 5 sur 5

Sujet : rand() srand() choix aléatoire d\'un mot

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    10

    rand() srand() choix aléatoire d\'un mot

    Bonjour,
    Mon problème est le suivant, je n\'arrive pas à trouver le bon code qui me permettrait de choisir un mot au hazarre dans un fichier ( un dico) à part (ne faisant pas partie du programme).
    aidez moi s\'il vous plait. :cry:

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    salut charlotte

    Precise un peut ta ou tes questions, le fichier dico s\'appel comment, il est ou et surtout quel tête a t il? (structure interne type suite de mot separés par un caractere special ?)

    le fait que le fichier ne fasse pas partie de ton prgm n\'est pas un probleme si nous pouvons et savons le recuperer. ensuite generer un pseudo aléatoire n\'est tjr pas un probleme il y a des fonction pour ça. Partant de la si nous savons comment parcourir le dico et combien de mots il contient nous sommes sauvé.

    Donne nous des détails quel compilateur utilise tu ?, pedigré integral du dico, lieu et nature de l\'appel de cette fonction \'RandomMot()\' etc ...

    a bientôt :wink:

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    merci de m\'avoir répondu.
    Je travaille sous xemacs, avec gcc.
    Au début j\'ai essayé de créer le fichier à partir de mon programme d\'écrire quelques mots dedans et d\'utiliser la fonction rand. Mais ça n\'a pas marché, il choisissait à chaque foi la dernier mot que j\'avais rentré. J\'ai vérifier que le fichier contenait tout les mots, et il les contenait bien tous.
    Ensuite je me suis apperçut qu\'il fallait une liste de mot assez importante. Alors j\'ai pensé à faire à part un fichier \"dico.txt\" contenant un certain nombre de mot rangé en colonne (je pensais que rangé ainsi ce serait plus simple d\'utiliser la fonction rand). Mais là, je ne sais vraiment pas comment m\'y prendre, je suis perdu. J\'ai regardé dans tous mes cours, mais ils n\'expliquent nul part cela. :cry:

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    à chaque foi la dernier mot que j\'avais rentré
    Peut être une question d\'initialisation du generateur de nombre aleatoires.En effet par example sous VB, si tu demande 10 chiffres a la suite, il te renvoie royalement toujours les même sauf si tu initialise le generateur avec une fonction dont j\'ai oublié le nom qui elle se base sur la date je croie qui elle par escence est changeante.
    Seconde possibilité, un probléme de borne (ou limites ) qui dans ton code renverai forcement le dernier mot.

    Pour ce qui est du fichier externe C\'est une bonne idée car en plus, il est envisageable de le changer sans toucher a la structure du prgm principal et rendre ainsi ton appli compatible avec plusieurs langues par example.

    De plus il me semple qu\'un rapid coup d\'oeuil sur un cas pratique du forum Java vas te donner des idées (Sortir le texte d\'une liste : http://www.forum.moteurprog.com/index.php?url=FORUM_msg.php&ID_topic=408@Java )
    Ce code montre une base pour ecrire un fichier texte sur le disque (constitution du dictionnaire)
    et ( Lecture d\'un fichier texte en java : http://www.forum.moteurprog.com/index.php?url=FORUM_msg.php&ID_topic=362@Java )
    Ce code montrer une base pour lire un fichier texte en y faisant un découpage sur la base d\'un caractère de type espace (ascii 32).

    (je ne redevellope pas ce code en C car j\'ai la flemme)

    Avant de t\'attaquer au fichier en question je te conseille de proceder avec methode :
    1/ afficher une suite de nombres aléatoires et vérifier que ceux ci on bien un carractère aléatoire et ceci sur plusieurs appel.

    2/ effectuer un affichage des mots de ton dico a l\'ecran sur l\'enssemble de ton fichier (par programme)

    3/ si tu as des nombre aléatoires qui sont compris dans les limites du nombre de mots de ton dico et si tu arrive a sortir tes mot un par un a l\'ecran, tu n\'aura qu\'a compter tes mot et sortir uniquement celui qui correspond a ton nombre .

    Donne moi des nouvelles et si ton code fonctionne tu pourrai le publier ici pour en faire profiter ceux qui passeront apres toi ...

    amitié :wink:

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Effictivement, quand tu utilises rand tu dois d\'abord l\'initialiser avec srand() en lui fournissant un argument qui change souvent (le tps de l\'horloge interne par exemple), ainsi :

    Code:
    #include <time.h>
    
    // Générateur
    srand(time());
    
    // Nombre entre 0 et 10
    rand()%10;
    Ce code devrait fonctionner, à toi de l\'adapter à l\'utilisation que tu fais de ces entiers pour piocher un mot dans ton dictionnaire. Bonne chance

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé