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

Collection et Stream Java Discussion :

Comptage dans tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut Comptage dans tableau
    bonjour à tous ,

    Je possède une matrice 3 lignes plusieurs colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int col = listRed.size();
    int[][] matrice = new int[3][col];
    J'ai rempli cette matrice de plein de nombre entre 0 et 255 au hazard.

    J'aimerais pour chaque ligne trouver le chiffre qui est présent en plus grand nombre.

    par exemple dans 35 26 45 127 35 81 94 16 35 Je veux voudrais que mon programme renvoi "le nombre 35 est en majorité et est présent 3 fois"

    avez-vous une idée ? merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Pour commencer, oublie l'histoire de matrice et de plein de lignes.
    Considère que tu as juste un tableau (comme si tu avais une seule ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int[] tableau = new int[140]: // 140 ou peu importe, bref, la taille du tableau
    Puis résous déjà le problème de quel est l'élément le plus présent et combien de fois, avec ça.

    Ensuite tu pourras te demander comme le faire plusieurs fois de suite dans une matrice.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Merci.

    Alors j'ai bien une idée mais elle me parait très compliquée.

    Appelons le tableau principal que j'étudie "tab"


    J'avais pour idée de créer un tableau "classement" vide dans lequelle je place chaque nombre que je croise, dans la première ligne de "classement", en parcourant "tab" et si ce nombre est déjà présent dans "classement" alors je ne le place pas.

    Ensuite pour chaque nombre de "classement" je parcours "tab" et si ce nombre est égal à un élément de "tab" j'implémente un compteur et à la fin je place ce compteur dans "tab" à la deuxieme ligne sous le chiffre correspondant. je fais ça pour tous les éléments.

    Et à la fin je peux lire la seconde ligne de "tab" et pour la plus grande je prends la valeur correspondante en ligne 1.

    Vous en pensez quoi c'est tordu non ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux stocker test compteur dans une Map<Integer,Integer> la clé étant el nombre, la valeur le nombre de fois où il est présent. Tu n'a plaus qu'à incrémenter el compteur correspondant à chaque fois que tu trouve un nombre.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Je ne vois pas trop comment l'utiliser ? avez vous un petit exemple d'uilisation de Map pour compter ?

    merci beaucoup

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int nombre = ....:
    Integer compteur = map.get(nombre);
    if (compteur==null){
       map.put(nombre,1);
    } else {
       map.put(nombre,compteur+1);
    }

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Je ne comprends pas bien le fonctionnement merci quand meme ^^.
    J'ai essayé avec des boucles et des if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
               int[][] tab = new int[2][col];
     
              for(int i = 0;i<listRed.size();i++){
                  int cpt = 0;
                  for(int j = 0;j<listRed.size();j++){
                      if(listRed.get(i) == listRed.get(j)){
     
                              cpt++;
                              tab[1][i]=cpt;
     
                          }
                      }
                  }
    Donc la je lis ma liste et si je trouve un nombre similaire j'incrémente mon compteur et j'ajoute la compteur à la deuxième ligne de mon tableau.

    Le problème c'est que lorsque je parcours ma liste selon les i, si je tombe sur un nombre que j'ai déjà compté il va se rajouter dans mon tableau et je ne veux pas

    Par exemple listRed ={28, 9,54 ,28 ,7, 32}
    Ici je compte mon 28 au premier passage donc cpt =2 et je l'affiche dans mon tableau
    mais au 4ème passage des i je recompte 28 et cpt =2 et je le ré-affiche dans mon tableau.
    Mais je ne le veux qu'une fois dans mon tableau "tab".

    Avez-vous une idée ?

    merci

  8. #8
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par Moux88 Voir le message
    Avez-vous une idée ?
    Oui utilise la solution fourni par tchize_ !
    si tu ne suis pas ce qu'on te propose, plus personne ne t'aidera !

    Citation Envoyé par Moux88 Voir le message
    Je ne comprends pas bien le fonctionnement merci quand meme ^^.
    Avant de cherche autre chose essaye de comprendre les propositions qui te sont faites...

    la solution de tchize_ te propose d'utiliser une Map, avec les commentaires tu comprendra peut être mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int nombre = .... // Le nombre que tu as obtenu avec listRed.get
    Integer compteur = map.get(nombre); // ici tu recherche si un compteur existe pour ce nombre, s'il en existe pas ca retourne null
    if (compteur==null){ 
       map.put(nombre,1); // s'il n'existe pas on ajoute le nombre avec le compteur positionné a 1
    } else {
       map.put(nombre,compteur+1); // s'il existe on met a jour le compteur en l'incrémentant de 1
    }
    en regardant la javadoc de Map tu comprendra que map.put va ajouter une nouvelle entré si la clé n'existe pas, mais va en modifier la valeur si elle existe
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Ok merci désolé.
    Je comprends un peu mieux avec les commentaires.

    Je pensais que c'était un niveau bien au dessus. Je vais persévérer alors merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comptage dans un tableau
    Par arklane dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 10/09/2014, 19h21
  2. [CR8.5] Pourcentage dans tableau ?
    Par Etienne51 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 20/08/2004, 14h00
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10
  5. pb de coord de tex dans tableau avec multitex
    Par sebh dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/01/2004, 21h36

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