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

 Java Discussion :

Récupération de données aléatoires dans un tableau


Sujet :

Java

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Par défaut Récupération de données aléatoires dans un tableau
    Bonjour

    Je reviens vers vous pour obtenir une aide concernant mon programme.

    Je possède un tableau à double dimension ne contenant que des caractères: char [] lettres={'A', 'b', 'c', 'd', 'e', 'F'}

    Je demande ensuite à l'utilisateur de choisir :

    * combien de b voulez vous mettre dans le tableau ?
    * combien de c ?
    * combien de d ?
    * combien de e ?

    Seulement il me faut laisser qu'un seul A et un seul F.

    Du coup, je dois obtenir un nouveau tableau avec plusieurs lettres : b c d et e + un seul A + un seul F
    Mais comment puis-je créer ce nouveau tableau en récupérant toutes ces valeurs char et de manière aléatoire ?

    Voici le code que j'ai pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public static void placeAlea (char[] lettres, char[] [] tab) {
              Random r=new Random();
              for (int i = 0; i < tab.length; i++)
              for (int j = 0; j < (tab.length)-1; j++)
              tab [i] [j]=lettres[((char)Math.random())*tab.length];
                      }
     
    public static void apLettres (char[] lettres) { 
     
            int nbrelettres=0;
            int A=1;
            int F=1;
     
             // demande du nombre de symboles à poser 
             // (on laisse le choix à l'utilisateur d'en déposer certains)
     
            System.out.println ("Combien de lettres E désirez-vous poser ?");
            int E=Terminal.lireInt();
            //E=Integer.parseInt(s); ??? s= ???
            System.out.println ("Combien de B désirez-vous poser ?");
            int B=Terminal.lireInt();
            System.out.println ("Combien de C désirez-vous poser ?");
            int C=Terminal.lireInt();
            nbrelettres=E+B+C+A+F;
     //---> Comment récupérer un nouveau tableau avec tous les symboles posés aléatoirement ?
     
            //le nombre de lettres posé ne doit pas dépasser 50 cases (sur 72 appartenant au tableau)
            if (nbrelettres >= 50)
            System.out.println ("Le nombre de lettres ne doit pas dépasser un total de 50");
     
        }
    Dans mon main, j'ai déclaré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // déclaration du plateau de jeu
          char[][] tab = new char[9][8];
     
      // déclaration des symboles à placer sur le plateau
           char [] lettres= {'A', 'b' , 'c', 'd', 'e', 'F'};
    Je vous remercie pour votre aide,
    Rose

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Citation Envoyé par Rose22 Voir le message
    Bonjour
    Je possède un tableau à double dimension ne contenant que des caractères: char [] lettres={'A', 'b', 'c', 'd', 'e', 'F'}
    . Ce n'est pas un tableau à deux dimension
    Quel est le problème que tu rencontres dans ton code? (Exception, résultat incorrect...)
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Ce n'est pas un tableau à deux dimension
    Quel est le problème que tu rencontres dans ton code? (Exception, résultat incorrect...)
    Je demande ensuite à l'utilisateur de choisir :
    Bonjour

    C'est une série de lettres que j'essayais de placer aléatoirement dans un tableau à double dimensions.
    Tu as vu mon code indiqué ci dessus ?

    J'obtiens des int puisque je demande combien de lettres chacune.
    Et mon probleme était de placer des char (les lettres) dans le tableau et de manière aléatoire.

    Je t'avoue que j'ai laissé tomber cette partie car je n'y arrivais pas. Mais s'il y a une solution, cela m’intéresse qd-même
    Merci

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Citation Envoyé par Rose22 Voir le message
    Bonjour
    C'est une série de lettres que j'essayais de placer aléatoirement dans un tableau à double dimensions.
    Tu as vu mon code indiqué ci dessus ?
    Oui j'ai bien vu ton code.

    J'obtiens des int puisque je demande combien de lettres chacune.
    Ici aussi j'avais bien pigé.

    Et mon probleme était de placer des char (les lettres) dans le tableau et de manière aléatoire.
    Là je comprends un peu mieux qu'avant.

    Proposition, tu crées d'abord un tableau de 72 char et tu y insères toutes les lettres (en fonction bien sur de nombre d’occurrence de chacune);
    Ensuite, tu parcours ce tableau à l'aide de la boucle tant que, et à chaque itération tu tires au hasard (en utilisant la classe Random) une lettre que affectes dans à ton tableau à deux dimensions.
    C'est juste une idée, si tu est prête pour l'aventure, on y aller
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Oui j'ai bien vu ton code.

    Ici aussi j'avais bien pigé.

    Là je comprends un peu mieux qu'avant.

    Proposition, tu crées d'abord un tableau de 72 char et tu y insères toutes les lettres (en fonction bien sur de nombre d’occurrence de chacune);
    Ensuite, tu parcours ce tableau à l'aide de la boucle tant que, et à chaque itération tu tires au hasard (en utilisant la classe Random) une lettre que affectes dans à ton tableau à deux dimensions.
    C'est juste une idée, si tu est prête pour l'aventure, on y aller

    Bonne idée masterG

    Mais je ne peux pas mettre 72 lettres dans mon premier tableau. Car c'est l'utilisateur qui doit choisir le nombre à poser : nombre de b, de c etc. De mon coté, je pose d'avance les lettres A et F dans mon tableau à double dimension, avec les indices que j'aurais choisies. Le reste sera posé aléatoirement.

    Ca signifie donc :

    tab[1][1]= 'A';
    tab[7][7]= 'F';

    Et j'obtiens après question à l'utilisateur :

    int nreB;
    int nbreC;

    je fais une boucle pour chacun :

    for (i=0;i<nbreB;i++)
    system.out.println ('b');

    for (i=0;i<nbreC;i++)
    system.out.println ('c');

    Et ensuite je procède comment ?

    Merci

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Citation Envoyé par Rose22 Voir le message
    Bonne idée masterG
    Mais je ne peux pas mettre 72 lettres dans mon premier tableau.
    Excuse, je me suis rendu compte après que l'utilisateur n'avait droit qu'à 50 entrées...
    Ok, bon début. Ensuite, tu peux implémenter cet algo pour voire ce que ça donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
             nbrLettre = 1
             Pour i allant de 1 à 9
                   Pour j allant de 1 à 8
                        Si i = 1 ET j = 1 Alors
                             tabFinal[i][j] = 'A'
                        Sinon
                             Si nbrLettre <= 50 Alors
                                tabFinal[i][j] = tabTemponLettre[Alea(1,50)]
                                nbrLettre ++
                             Sinon
                                Sortir de la boucle j
                             FinSi
                        FinSi
                   FinPour j
                   Si nbrLettre > 50 Alors
                       Sortir de la boucle i
                   FinSi
             FinPour i
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Déjà répondu dans un autre poste, on se disperse parce que monsieur rose22 est impatient et reposte la même question à 10 heures d'intervalle:


    http://www.developpez.net/forums/d14...oires-tableau/

  8. #8
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Déjà répondu dans un autre poste, on se disperse parce que monsieur rose22 est impatient et reposte la même question à 10 heures d'intervalle:


    http://www.developpez.net/forums/d14...oires-tableau/
    Hello Tchize

    contente de te revoir ! ce n'est pas monsieur mais madame
    J''ai reposté mon post 10 jour plus tard. Nuance....
    Et désolée de ne pas comprendre tes explications.

    rose22

    NB ma question concerne aussi à présent un tableau à DEUX dimensions.

    La solution de Joel était intéressante, mais je ne voulais pas recommencer mon programme avec des listes. Et le prof nous demande du Random.
    Ai je le droit de demander de nouveaux avis ?

    je te remercie donc pour ta bienveillance (et ta patience)

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Non, c'est bien la même date sur les deux posts.

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par tchize_ Voir le message
    Non, c'est bien la même date sur les deux posts.
    Je confirme : le 19/05.

    Citation Envoyé par Rose22 Voir le message
    La solution de Joel était intéressante,
    Pour beaucoup, un développement de la solution de @Thelvin, en fait.

    Citation Envoyé par Rose22 Voir le message
    mais je ne voulais pas recommencer mon programme avec des listes.
    Ce n'est pas un bon argument, mais bon tu fais ce que tu veux après tout.

    Citation Envoyé par Rose22 Voir le message
    Et le prof nous demande du Random.
    La, par contre, c'est un bon argument, imparable.

    Citation Envoyé par Rose22 Voir le message
    Ai je le droit de demander de nouveaux avis ?
    Tout à fait, mais tu aurais pu le faire dans la discussion initiale, ce qui aurait permis à tous de savoir ce qui avait déjà été répondu.

    Pour ce qui est de n'utiliser que du Random au lieu d'une List et d'un shuffle(), tu peux faire un tableau de compteur, une case par lettre : tu initialises ces compteurs avec les nombres de lettres à placer et ensuite :

    1. Choisir la première case du tableau à 2 dimensions[nbLignes][nbColonnes] (index=0)
    2. Tant qu'il reste des lettres à placer (soit tant que tous les compteurs ne sont pas à 0, ou éventuellement, tu utilises une variable int avec le total de lettres à placer pour éviter de tester tous les compteurs) ;
    3. Choisir une lettre à placer, c'est-à-dire un nombre aléatoire entre 0, inclus, et le nombre de lettres, exclus, à placer (Random.nexInt(nbLettres), ou (int)(Math.random()*nbLettres)) ;
    4. Si le compteur correspondant est 0, recommencer à 3) (boucle do while, par exemple) ;
    5. Décrémenter le compteur ;
    6. placer la lettre dans la case actuellement choisie dans le tableau à 2 dim (en x= index%nbColonnes, y=index/nbCollonnes, donc) ;
    7. passer à la case suivante dans le tableau à 2 dimensions (incrémenter index) ;
    8. Aller en 2).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Par défaut
    Merci pour vos réponses
    je vais essayer de coder tout cela.

    Bonne journée à vous tous,
    Rose

Discussions similaires

  1. récupération de caracteres aléatoires dans un tableau
    Par Rose22 dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 23/05/2014, 15h39
  2. problème de récupération de données String dans un tableau
    Par simonteb dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2012, 17h21
  3. Rangement de données aléatoires dans un tableau bidimensionnel de 9x9
    Par dcligniez dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/12/2010, 20h52
  4. Réponses: 5
    Dernier message: 09/10/2008, 14h28
  5. [MySQL] Récupération données MySQL dans un tableau
    Par joebiloute202 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/08/2008, 12h09

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