IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Extraction d'un fichier .txt vers une liste + random


Sujet :

Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Extraction d'un fichier .txt vers une liste + random
    Bonjour à tous, g un double problème:
    Le premier:
    Extraire un fichier texte de type .txt
    3D
    4C
    5K
    ...
    dans une liste (structure de données dynamique)
    Le second:
    Il s'agit en fait de répartir aléatoirement la liste chargée au dessus entre 4 sous-listes (3 de meme taille et une plus petite).
    Dans cet optique, je ne sais quelle méthode utiliser:
    Je pensais à utiliser un random qui donne une position dans la liste mais comment y acceder ?(ce n'est pas un tableau)
    Sinon, il s'agirait d'extraire aléatoirement directement du fichier texte vers la liste pour la diviser ensuite mais se pose ici le problème des répétitions (non désirées).
    Je vous remercie de votre aide

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Je ne sais pas si quelqu' un a compris son probleme. Mais moi, je n' ai rien compris du tout.
    D' abord essaie d' ecrire en français et non en sms.
    Ensuite, pose clairement ton probleme.

    Si tu peux mieux expliquer le premier probleme, je crois que tu pourras vite trouver ne reponse. Ce que j' ai compris, c' est que tu as un fichier et tu veux ranger les differents elements dans des listes chainées. Je ne sais si c' est ce que tu veux.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 50
    Points
    50
    Par défaut
    coucou

    tu dis que la liste que tu utilises n'est pas un tableau, c'est une liste chaînée ?

    Je sais pas si c'est une bonne solution, mais :
    - tu pourrais d'abord parser entierement ton fichier .txt et créer une grande liste chaînée.
    - puis, en connaissant du coup la longueur de la liste, tu crées tes 4 sous listes avec les bonnes longueurs.
    - ensuite tu lis chaque item de la liste avec tous les elements, et pour chaque element, tu fais un random qui te donne un nb entre 0 et 3, pour te donner la liste de destination (une des 4) , puis tu fais un random 0 ou 1, pour savoir si tu ajoutes l'item en debut ou en fin de liste, jusqu'a la longueur max predefinie de la liste (sinon, tu passes en random sur une autre liste).

    bon, c'est loin d'etre parfaitement aleatoire, mais sans pouvoir faire d'insertion ou de lecture n'importe ou ds ta liste, je ne vois pas d'autre solution.
    Cours et ateliers d'initiation à la mosaique LesPierresArcEnCiel

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je vais essayer d'être plus clair.
    Il s'agit de programmer un jeu de cartes.
    Pour cela, j'ai identifié les cartes avec des noms: 1,2,3,...V,D,R et leurs couleurs: P, C, K(carreau), T.
    J'ai mis ces caractères dans un fichier texte
    L'objectif est donc de distribuer les 52 cartes entre les joueurs.
    Ici, j'ai 3 joueurs et un talon==> ce qui fait 15 cartes par joueurs +7 au talon
    J'ai plus ou moins réussi à charger le fichier texte dans une liste chainée qui a donc une longueur de 52 élements.
    Là où je bloque, c'est de répartir ces cartes(cette liste chainée) entre les 4 listes chainées (des joueurs) et celle du talon et cela de façon parfaitement aléatoire

    @bdeuu: merci de ta réponse. C'est quoi un item??
    Sinon, je n'ai pas besoin de second random car je vais trier la liste
    La où je tique, c'est comment on fait pour créer un liste dont on veut une longueur précise(il faudrait mettre un while?)?

    Si vous avez d'autres idées....

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gio,

    La liste des cartes pourrait très bien être initialisée en statique dans le programme, puisque qu'elle ne va jamais changer.
    Je verrais d'ailleurs plutôt des valeurs numériques à la place de chaînes de caractères (1,2,...,10,11,12 pour une couleur, 101,102,...112 pour la suivante ...), ce qui en plus permet du tableau pré-initialisé, puisqu'il devient très facile à générer.

    Tu peux parfaitement utiliser des tableaux pour les cartes distribuées, puisque ils auront une taille constante, il suffit de conserver le nombre de cartes qu'ils contiennent.

    Pour distribuer au hasard, une possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    - dupliquer le tableau des cartes (ou en initialiser un, selon ton choix comme précisé ci-dessus)
     
    - tant qu'il y a des cartes à distribuer faire
      - nombre au hasard, max fonction du nombre de cartes restant à distribuer
      - cette valeur va dire quelle carte du tableau dupliqué utiliser
      - une fois distribuée, on la retire du tableau, et on met à jour le nombre restant
    - fin tant que
     
    - ce qu'il reste dans le tableau dupliqué est le talon
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    +1 à droggo.
    Je crois que c' est la meilleur solution. Les listes chainées n' ont vraiment rien à voir ici. Mieux vaut faire simple et bien que de se compliquer la vie pour rien.
    On utilise les listes chainnées quand on ne connait pas au préalable la memoire qu' on vas utiliser au cours du programme (quand ça peut varier d' une execution à l' autre).

Discussions similaires

  1. [Toutes versions] lecture et redirection de données d'un fichier .txt vers une feuille Excel
    Par Max_F dans le forum Excel
    Réponses: 1
    Dernier message: 30/10/2014, 22h46
  2. [XL-2003] copier une ligne d'un fichier txt vers une cellule
    Par hatemhatem dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2010, 13h20
  3. Comment transformer les tables dans un fichier txt vers une BD comme Mysql
    Par badrdine.in dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 20/03/2009, 12h58
  4. [VBA Excel] Extraction de données fichier txt vers Excel et mise en forme
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2008, 11h45
  5. fichier txt vers une table acces
    Par sahraoui07 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/03/2007, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo