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

Windows Forms Discussion :

tri de tableau


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut tri de tableau
    Bonjour

    j'essaye de trier des données d'un fichier texte, pour cela
    j'insère chaque ligne dans un tableau, puis fais un array.sort(montablo)
    sauf que pas de bol, les lignes commences par des lettres puis des chiffres
    le tri est donc incorrect.
    j'ai donc réussi à séparer les lettres des chiffres par un espace, en
    espérant que le trie fonctionne mieux, mais comment trier par rapport
    à la colonne des lettres puis celle des chiffres,faut il passer
    par une collection, un datatable ou une database ?


    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    il faut que tu implémentes un IComparer qui compare deux lignes selon tes différents critères de tri. Par exemple pour comparer selon la 1e colonne puis la 3e colonne (en supposant que les champs sont séparés par des espaces) :
    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
    Public Class MonComparer
        Implements IComparer
     
              Public Function Compare( ByVal x As Object, ByVal y As Object) As Integer _
             Implements IComparer.Compare
     
             Dim ligne1 As String = CStr(x)
             Dim ligne2 As String = CStr(y)
             Dim champs1() As String = ligne1.Split(" ")
             If champs1(0) > champs2(0) Then
                 Return 1
             ElseIf champs1(0) < champs2(0)
                 Return -1
             ElseIf champs1(2) > champs2(2) Then
                 Return 1
             ElseIf champs1(2) < champs2(2) Then
                 Return -1
             Else
                 Return 0
             End If
          End Function 'IComparer.Compare
     
    End Class
     
    ...
     
    Array.Sort(lignes, New MonComparer())

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut re
    merci beaucoup,

    j'essaie ca

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut re
    j'avance lentement mais surement...

    le trie est le suivant :

    C 1
    C 10
    C 100
    C 101
    C 102
    C 103
    C 104
    C 105
    C 106
    C 107
    C 108
    C 109
    C 11

    la partie avec les lettres se tri correctement par contre les chiffres

    voici le code :

    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
    Public Class Mysortclasse
        Implements IComparer
     
        Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
       Implements IComparer.Compare
            Dim ligne1 As String = CStr(x)
            Dim ligne2 As String = CStr(y)
            If ligne1 Is Nothing Then ligne1 = String.Empty
            If ligne2 Is Nothing Then ligne2 = String.Empty
            Dim champs1() As String = ligne1.Split(" ")
            Dim champs2() As String = ligne2.Split(" ")
            If champs1(0) > champs2(0) Then
                Return 1
            ElseIf champs1(0) < champs2(0) Then
                Return -1
            ElseIf champs1(1) > champs2(1) Then
                Return 1
            ElseIf champs1(1) < champs2(1) Then
                Return -1
            Else
                Return 0
            End If
        End Function 'IComparer.Compare
     
    End Class

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Par défaut re
    sujet résolu,

    il suffit de mettre Cdec devant le champ numérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ElseIf CDec(champs1(1)) > CDec(champs2(1)) Then
    encore merci tomlev de m'avoir mis sur la piste

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

Discussions similaires

  1. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  2. Problème dans un tri de tableau
    Par pmboutteau dans le forum ASP
    Réponses: 5
    Dernier message: 29/11/2005, 13h12
  3. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 13h46
  4. [PERL] problème tri de tableau
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2005, 15h42
  5. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10

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