Comptabiliser les doublons d'un tableau

cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012 - 25 sept. 2006 à 16:47
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012 - 26 sept. 2006 à 14:07
Bonjour,

Je souhaiterai comptabiliser les doublons d'un tableau et récupérer sa valeur !

Exemple :

sTableau = "100,101,102,100,103,100,104,102,104,103,100,105,106,107,101"

Résultat :
100 = 4
101 = 2
102 = 2
103 = 2
104 = 2
105 = 1
106 = 1
107 = 1

Merci d'avance pour votre aide.

:::Fabiano13:::

7 réponses

crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
25 sept. 2006 à 18:49
crilun
à mon avis le plsu rapide est de faire un quicksort puis de parcourir le tableau dans l'ordre, tu peut alors comptabiliser sans pb puisque les memes elements se suivent.
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
25 sept. 2006 à 19:45
Je suis débutant, peux -tu m'aider sur ce script ?

D'avance merci.
Fabiano13
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
25 sept. 2006 à 21:53
crilun
pour le quickSort il s'agit d'une methode de tri tres rapide en recursif, je vais pas m'etendre dessus c'est expliqué
ici
pour ce qui est de ton tableau apparement tu utilises une chaine de caractere (sTableau) et non pas un  tableau,
il faut donc que tu la decoupes:
dim sTemp as string()=sTableau.split(",") 'Pour decouper la chaine dans un tableau avec comme caractere separateur ","

tu peut obtenir la longeur de ton tableau grace a sTemp.length

voila tu as tout les elements pour le faire maintenant
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
25 sept. 2006 à 22:31
J'ai bien compris le sens du déroulement, mais comment tu compares et comptabilises ?

<%
sTableau = "100,101,102,100,103,100,104,102,104,103,100,105,106,107,101"

Dim sTemp as string() = sTableau.split(",")
Dim Icount
Dim LnTamp = sTemp.length

for each Icount in LnTamp
???
next

%>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
26 sept. 2006 à 09:51
crilun
ok, je te fais un exemple ce midi la je suis au boulot
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
26 sept. 2006 à 13:28
crilun

comme promis voici le petit exemple avec tri et parcours du tableau

 Private Sub QTri_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sTableau As String = "100,101,102,100,103,100,104,102,104,103,100,105,106,107,101"
        Dim sTemp As String() = sTableau.Split(",")
        QuickSort(sTemp, 0, sTemp.Length - 1)

        Dim sParcours As String
        Dim sPrec As String = ""
        Dim sResult As String
        Dim iNbr As Integer = 0

        For Each sParcours In sTemp 'Parcours et comptage des elements du tableau
            If sParcours = sPrec Then
                iNbr += 1
            Else
                If iNbr > 0 Then
                    sResult += sPrec & "=" & iNbr & vbCrLf
                End If
                iNbr = 1
            End If
            sPrec = sParcours
        Next

        'Ajout du dernier resultat
        If iNbr <> 0 Then
            sResult += sPrec & "=" & iNbr & vbCrLf
        End If

        'MsgBox(sResult) 'Affichage du resultat si VB.net
        response.write("<script>alert('sResult')</script>") 'Affichage du reseultat si ASP.NET

    End Sub

    'Tri du tableau
    Private Sub QuickSort(ByRef sTab As String(), ByVal iDebut As Integer, ByVal iFin As Integer)

        Dim sCellule As String
        Dim iPivot As Integer = iDebut
        Dim iDroite As Integer = iFin
        Dim iGauche As Integer = iDebut

        While iGauche <> iDroite 'tant que l'on a pas parcourus tout les elements du debut a la fin

            If sTab(iGauche) > sTab(iDroite) Then 'alors on inverse les 2 cellules
                sCellule = sTab(iGauche)
                sTab(iGauche) = sTab(iDroite)
                sTab(iDroite) = sCellule
                iPivot = iGauche + iDroite - iPivot
            End If

            If iPivot = iGauche Then
                iDroite -= 1
            Else
                iGauche += 1
            End If

        End While

        If iDebut < iGauche - 1 Then QuickSort(sTab, iDebut, iGauche - 1) 'appel recursif sur la partie droite

        If iFin > iDroite + 1 Then QuickSort(sTab, iDroite + 1, iFin) 'appel récursif sur la partie gauche

    End Sub
0
cs_fabiano13 Messages postés 262 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 27 février 2012
26 sept. 2006 à 14:07
Merci beaucoup !
0
Rejoignez-nous