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

VB.NET Discussion :

Vérifier la clef suivante d'un dictionnaire dans un For Each


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Vérifier la clef suivante d'un dictionnaire dans un For Each
    Bonjour à tous.

    J'ai un dictionnaire que je parcours avec un For Each. Mais à l'intérieur de celui-ci je voudrais vérifier la clef suivante et sa valeur associer.

    Genre:
    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
    Dim Somme As Double.
    Dim i a integer = 0
    Dim Moyenne As Double
     
    For Each Dt As Date In Dico.Keys      ' Le dico (Key =Date,Valeur = Double)
       If Dico(Dt) = 0 then
          If Dico(key suivante) = 0 then
                'Vérification que la clef suivante est égale à l’intervalle de temps de mesure
                If ("Keys suivante" - Dt ) = intervalle then
                    Somme += Dico(Dt)
                    i += 1
                Else
                    'Pas d'ajout de valeur
                End if
           Else
                Somme += Dico(Dt)
                i += 1
           End If
       Else
          Somme += Dico(Dt)
          i += 1
       End If
    next
     
    Moyenne = Somme / i
    Le but étant d’éliminer les valeurs 0 indiquant un trou dans les mesures (Value). Si entre les 2 valeurs 0 il y a un intervalle supérieur à l'intervalle des mesures on n'ajoute pas les 0 pour le calcul de la moyenne.
    A la base, le fichier qui me sert à remplir le dico nous sert a crée des courbes. et donc les relevé de données s’arrêtent lorsqu'il n'y a rien à mesurer. Pour éviter que la courbe ne soit erronés on ajout deux 0 dans le fichier un à l’arrêt des mesures et l'autre à la reprise pour que la courbe soit bien à 0.

  2. #2
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Bonjour,

    Quel est ton problème?

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par bizet Voir le message
    Bonjour,

    Quel est ton problème?
    Bonjour, je voudrais savoir comment lire la clef suivante du dico et sa valeur, sans pour autant modifier l'ordre de lecture du For Each.

    Ou utiliser autre chose que le For Each qui me permettrait de le faire.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Bonjour,

    Aucune idée de comment faire ceci avec un For Each.
    Par contre tu peux le faire avec un For basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For i as integer= 0 to TaListe.count-1
     
    If TaListe(i+1)=0  'Test si la valeur suivante est égale a 0
     
    End If
     
    Next

  5. #5
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    salut

    si tu connais ta clé suivante alors il suffit de faire
    Si tu ne la connais pas, alors effectivement il te faudra passer par une boucle for ou while.

    Bon courage.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par bizet Voir le message
    salut

    si tu connais ta clé suivante alors il suffit de faire
    Justement, il ne la connait pas, il veut la trouver.

    Si tu ne l'as connais pas, alors effectivement il te faudra paser par une boucle for ou while.
    Ca ne me semble pas la meilleure solution.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Meiteisho Voir le message
    Bonjour,

    Aucune idée de comment faire ceci avec un For Each.
    Par contre tu peux le faire avec un For basique
    Absolument pas : son dictionnaire n'est pas indexé par un scalaire.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Arf désolé, autant pour moi ...

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    L'utilisation du dictionary n'est peut être pas le meilleur choix ici. En effet, tu n'as pas moyen d'aller voir la valeur de la clef suivante sans itérer la boucle.

    Pour ce que tu veux faire, va plutôt voir du coté de la LinkedList.

    http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx

    Une autre solution peut être d'utiliser un Dictionary mais sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dictionary<int, KeyValuePair<DateTime, Double>>
    Donc avec un rang "entier" auquel tu associe tes paires (date, valeur).

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

Discussions similaires

  1. [XPATH] Récupèrer la "row" précédente dans le for each
    Par tommey dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 05/06/2007, 15h59
  2. [XSLT][débutant] Problème xsl:value-of dans xsl:for-each
    Par Choubie dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/05/2007, 16h30
  3. [XSLT] Element parent dans un For-each
    Par Katachana dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2007, 09h39
  4. [XSLT] Number dans un for-each
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/08/2006, 13h40
  5. [XML-XPATH] Problème dans un for each
    Par stailer dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/12/2005, 12h11

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