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

WinDev Discussion :

Extraire valeur la plus présente dans une série de nombre [WD12]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Extraire valeur la plus présente dans une série de nombre
    Bonjour à tous,

    Je manipule de longues séries de nombres et je voudrais connaitre la valeur qui est présente le plus de fois dans cette série.
    Existe t-il une fonction simple renvoyant cette information? (plutôt que faire des compteurs sur chaque valeur et isoler le compteur max)

    ex: {1, 2, 2, 3, 5,5,5,5,5,5,5,9,0,7}
    Je voudrais obtenir 5. (mes séries sont beaucoup plus longues)

    Merci!

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour,
    as-tu essayé d'utiliser la fonction :

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Non, je ne l'ai pas testée car pour utiliser ChaineOccurence il faut connaitre le caractère que l'on recherche, ce qui n'est pas mon cas.

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Tu peux t'inspirer des réflexions dans le sujet suivant.

    Pour ma part j'utiliserai ExtraitChaîne avec un tableau associatif.

  5. #5
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    je te conseillerais de faire une fonction d'abord qui te renverrais le nombre d'occurrence d'une d'un caractère dans la chaine et ensuite de stocker le résultat dans un tableau de 2 par 3 chaines. La première pour la lettre et la seconde pour le nombre d'occurrence et ensuite tu détermine le max du tableau, également si tu veux dans une autre fonction.

  6. #6
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Citation Envoyé par le pingouin fou Voir le message
    Non, je ne l'ai pas testée car pour utiliser ChaineOccurence il faut connaitre le caractère que l'on recherche, ce qui n'est pas mon cas.
    Bonsoir,

    Euhh... il n'y a pas 4000 possibilités lol Tu as juste à trouver les occurrences des chiffres 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 c'est tout

  7. #7
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    si ce ne sont que des chiffres, damien.c a raison, et c'est hyper simple a faire avec un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ChLue est une chaine = ""
    ChAlire est une chaine = ""
    MonTableau est un tableau de 10 entiers
    // lecture de chaque occurrence
    ChLue = extraitchaine(ChAlire,rangpremier)
    tantque chlue <> EOT
       // lecture chLue
       Montableau[ val(ChLue)+1) ] ++
       // lecture suivante
       ChLue = extraitchaine(ChAlire,rangsuivant)
    // fin
    fin
    Je fais cela de mémoire car je n'ai pas Windev sous la main...
    Apres, le tableau comprend toutes les occurrences, il suffit de la parcourir...

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    Bonjour,
    la fonction qui réalise ce qui est recherchée dans ce post existe dans Excel et s'appelle Mode.
    Voici ce que je propose pour réaliser cette fonction en WLangage ( l'astuce consiste à utiliser un tableau trié) :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    ChLue est une chaîne = ""
    ChAlire est une chaîne = "200,300,200,100,10,1,40,50,60,60,70,80,3,5,3,5"
    MonTableau,MonTableauValeursMode sont des tableaux d'entiers
    ValeurCourante,cpt,cptMax,ValeurMode sont des entiers
    // lecture de chaque occurrence
    ChLue = ExtraitChaîne(ChAlire,rangPremier,",")
    TANTQUE ChLue <> EOT
    	// lecture chLue
    	TableauAjoute(MonTableau,Val(ChLue))
    	// lecture suivante
    	ChLue = ExtraitChaîne(ChAlire,rangSuivant,",")
    	// fin
    FIN
    TableauTrie(MonTableau, ttCroissant)
    ValeurCourante = MonTableau[1]
    cpt=1
    cptMax = 1
    ValeurMode = MonTableau[1]
    POUR i = 2 _A_ TableauOccurrence(MonTableau)
     
      SI MonTableau[i] = ValeurCourante ALORS 
          cpt++
      SINON
          SI cpt > cptMax ALORS
        	    cptMax = cpt   	
         	    ValeurMode = ValeurCourante
          FIN	
      ValeurCourante=MonTableau[i]
      cpt = 1
      FIN
    	// Vérifier dernière valeur
    SI cpt > cptMax ALORS
      cptMax = cpt   	
      ValeurMode = ValeurCourante
    FIN
    FIN
    Trace("Valeur la plus fréquente :" + ValeurMode)
    // si on veut afficher toutes les nombres avec la fréquence Max
    ValeurCourante = MonTableau[1]
    cpt=1
    ValeurMode = MonTableau[1]
    POUR i = 2 _A_ TableauOccurrence(MonTableau)
     
    	SI MonTableau[i] = ValeurCourante ALORS 
    		cpt++
    	SINON
    		SI cpt = cptMax ALORS
    			TableauAjoute(MonTableauValeursMode,ValeurCourante)    	
    		FIN	
    		ValeurCourante=MonTableau[i]
    		cpt = 1
    	FIN
     
    FIN
    Trace("Valeurs les plus fréquentes : ") 
    POUR TOUT UnElément DE MonTableauValeursMode
    Trace(UnElément)
    FIN
    Ami calmant J.P

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

Discussions similaires

  1. Déterminer la Valeur la plus grande dans une table
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/08/2014, 23h35
  2. Trouver la valeur la plus proche dans une ligne
    Par tavita987 dans le forum Excel
    Réponses: 5
    Dernier message: 05/02/2014, 11h12
  3. Valeur la plus fréquente dans une plage filtré
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 08h55
  4. trouver valeur la plus proche dans une colonne
    Par niepoc dans le forum Général Python
    Réponses: 10
    Dernier message: 05/06/2009, 15h02
  5. Valeur la plus courante dans une colonne
    Par phoque.r dans le forum Excel
    Réponses: 2
    Dernier message: 28/05/2007, 13h37

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