LISTBOX COMPARAR SEQUENCIA LINHA POR LINHA

MARCELO.TREZE 18/10/2012 16:26:22
#412289
Raceman esquenta não colega, não entendi mal, nem levei pro outro lado, eu vezes também me expresso mal, abraço parceiro.

PS: gostei do código que você fez.

PAYDANA 18/10/2012 18:30:45
#412307
Pessoal, agradeço muito o apoio de vocês.
Porem minha necessidade e um pouco diferente

No caso dos codigos postados por vocês (o que agradeço muito) eles me retornam o seguinte:

01
01
01
09
08
01
09
msgbox 01 = 4
msgbox 09 = 2
msgbox 08 = 1

Ou seja ele esta retornando o total de vez que os números apareceram, e não e bem isso que procuro
eu preciso saber e quantas vezes os numeros vieram em sequência

no caso ae seria uma sequencia de 3 x o 01 pulou duas vezes e veio novamente depois mais um pulo

O que estou tentando faser e encontrar uma possibilidade do 01 (exemplo) aparecer novamente ja que na pratica vou usar sequências de milhares de numeros

Obrigado e desculpa qualquer coisa ae.
RACEMAN 19/10/2012 08:36:19
#412333
Entao meu amigo...
Agora sim, entendi sua duvida.
Em anexo está a solução.
Espero que você tente aprender e, não seja como muitos que copiam e colam o código.

Ai realmente tem que usar for aninhado, aparando quando nao tiver iguais....
GANDA.NICK 20/10/2012 12:57:08
#412401
beleza


tive este resultado aqui na minha tentativa de resolver o problema:

Numero: 01 Seguidos: 3 Saltou: 0
Numero: 01 Seguidos: 1 Saltou: 2
Numero: 09 Seguidos: 1 Saltou: 3
Numero: 09 Seguidos: 3 Saltou: 2
Numero: 08 Seguidos: 1 Saltou: 4
Numero: 10 Seguidos: 1 Saltou: 9

usei estes valores:
List1.AddItem ([Ô]01[Ô])
List1.AddItem ([Ô]01[Ô])
List1.AddItem ([Ô]01[Ô])
List1.AddItem ([Ô]09[Ô])
List1.AddItem ([Ô]08[Ô])
List1.AddItem ([Ô]01[Ô])
List1.AddItem ([Ô]09[Ô])
List1.AddItem ([Ô]09[Ô])
List1.AddItem ([Ô]09[Ô])
List1.AddItem ([Ô]10[Ô])




usei arrays para fazer a rotina, poupa tempo em relação à listbox

coloque lá uma picturebox e teste aí se era isso que queria....



Private Sub Command1_Click()

Dim i As Integer, i2 As Integer, i3 As Integer, iRepetidos As Integer, iSeguidos As Integer, iSaltou As Integer

Dim iNrReg As Integer [ô]numero de registos
Dim aNumerosTodos() As String, aNumerosUnicos() As String

iNrReg = List1.ListCount - 1

ReDim aNumerosUnicos(iNrReg) As String
ReDim aNumerosTodos(iNrReg) As String

[ô]***** copiar o list para os arrays
For i = 0 To List1.ListCount - 1
aNumerosUnicos(i) = List1.List(i)
aNumerosTodos(i) = List1.List(i)
Next [ô]i

[ô]***** apagar registos repetidos de um dos arrays
For i = 0 To iNrReg - 1
For i2 = i + 1 To iNrReg
If aNumerosUnicos(i) = aNumerosUnicos(i2) And aNumerosUnicos(i) <> [Ô][Ô] Then
aNumerosUnicos(i2) = [Ô][Ô]
iRepetidos = iRepetidos + 1
For i3 = i2 To iNrReg - 1
aNumerosUnicos(i3) = aNumerosUnicos(i3 + 1)
aNumerosUnicos(i3 + 1) = [Ô][Ô]
Next [ô]i3
i2 = i2 - 1
End If
Next [ô]i2
Next [ô]i

[ô]***** redimensionar array
ReDim Preserve aNumerosUnicos(UBound(aNumerosUnicos) - iRepetidos) As String

[ô]***** ver sequencia e saltos, LOL, escrever resultados na picturebox
For i = 0 To UBound(aNumerosUnicos)
iSaltou = 0
iSeguidos = 0
For i2 = 0 To UBound(aNumerosTodos)
If aNumerosUnicos(i) = aNumerosTodos(i2) Then
iSeguidos = iSeguidos + 1
If i2 < UBound(aNumerosTodos) Then
If aNumerosUnicos(i) <> aNumerosTodos(i2 + 1) Then
Me.Picture1.Print [Ô]Numero: [Ô] & aNumerosUnicos(i) & [Ô] Seguidos: [Ô] & iSeguidos & [Ô] Saltou: [Ô] & iSaltou
iSaltou = 0
End If
End If
If i2 = UBound(aNumerosTodos) Then Me.Picture1.Print [Ô]Numero: [Ô] & aNumerosUnicos(i) & [Ô] Seguidos: [Ô] & iSeguidos & [Ô] Saltou: [Ô] & iSaltou
Else
iSeguidos = 0
iSaltou = iSaltou + 1
End If
Next [ô]i
Next [ô]i

End Sub




depois diga aí alguma coisa ............
PAYDANA 22/10/2012 18:09:55
#412542
Obrigado galera, todos ajudaram pois aprendi muita coisa

Mais na pratica nenhum esta da forma q preciso, porém estão quase e so eu da uma fuçadinha

Resumindo todos merecem creditos.

Dae quem dos que me ajudaram responder primeiro eu dou os creditos e fecho o tópico

Obrigado a todos
Página 2 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas