IMPORTAR STRING E ORDENAR

USUARIO.EXCLUIDOS 08/06/2005 08:53:20
#87602
como conseguir, ver qual e maior, num texto separado por virgulas

exempllo

5,6,1,2,4,
pegar essa string acima
e verificar qual é menor, colocnando em uma ordem crescente
me ajudeem
falow

[txt-color=#008000]** Título Original ("ME AJUDEM") editado por KpellaJr
** Por favor, leia as Regras do Fórum [/txt-color]
[s25]
JEAN.JEDSON 08/06/2005 09:26:03
#87606
bem... para separar é fácil...

dim Valores as String
dim Matrix() as String

Valores = ",5,6,1,2,4"
matrix = Split(sValores, ",", 99)

agora só falta fazer a lógica de ordenação
JEAN.JEDSON 08/06/2005 09:30:36
#87607
agora... para sortear... tbm ficou fácil: http://www.vbmania.com.br/vbmdetail.php?varID=830
JEAN.JEDSON 08/06/2005 09:31:55
#87608
importante: note que para funcionar a função split, no início da string vc tem que ter uma vírgula, e no fim não. se não tiver no começo e tiver no fim, ele não pegará o primeiro número, e criará um nulo no fim...

espero ter ajudado.
LCSD 08/06/2005 10:30:25
#87632
Marcel

Bom Dia

Você abriu outro tópico com o mesmo assunto, só que na parte de ordenação, por favor leia as Regras do Fórum, começou um assunto vá até o FINAL no mesmo tópico, nunca subdivida porque no Fórum pode ficar para futura consulta, portanto tenha Títulos Sugestivos e siga no mesmo tópico até ter a solução, assim que tiver encerre-o

Colabore com o VBMania.
[s50]
USUARIO.EXCLUIDOS 08/06/2005 10:32:35
#87633
oq esta errado?

Dim numeros
Dim termo1
Dim caracter
Dim termos
Dim restante
Dim v
Dim posi
Dim termo2
Dim s
Dim menor
Dim sobra
Dim posi2
termos = Len(Text1.Text)
restante = Text1.Text
caracter = posi + 1
For v = 1 To termos + 2
'atribuir para posi a posição da primeira virgula
posi = InStr(1, restante, ",", 1)
'achar o termo1
termo1 = Mid(restante, posi - 1, posi - 1)
'atribuir para posi2 a posição da segunda virgula
posi2 = InStr(posi + 1, restante, ",", 1)
'tirar o termo1 do restante
restante = Mid(restante, posi + 1, termos)
'Do While
If termo1 < Mid(restante, 1, posi - 1) Then
'If posi2 < posi And posi2 = 0 Then
posi2 = posi - 1
'Else
'posi = InStr(posi2, restante, ",", 1)
posi2 = InStr(posi + 1, restante, ",", 1)
'End If
'sobra = Mid(restante, 1, posi - 1)

menor = termo1
'If Len(restante) <= 1 Then
' List1.AddItem = termo1
caracter = Len(restante) - posi
End If
'Loop

restante = restante & "," & termo1
List1.AddItem menor
menor = ""
If InStr(1, restante, ",", 1) = 0 Then
List1.AddItem restante
restante = 0
End If
Next
LCSD 08/06/2005 10:42:09
#87637
Marcel

Como o Jean Jedson indicou use o SPLIT que ele te retorna uma Matriz, é só informar o Delimitador, no caso a Vírgula.

Não use Dim termo1 , se o termo1 for Integer, declare o TIPO CORRETO de dados, senão estará usando o Variant que degrada a performance e você declarou a todos como VAriant.

Até Breve
[s50]
USUARIO.EXCLUIDOS 08/06/2005 11:22:06
#87659
'ja to conseguindo pegar a posição das virgulas
'e pegando os temos e tudo mais, so estou errando, na hora
'de comparar e mandar pro list...
eu ja sei a logica,me falta comandos...
como fariam isso?
LCSD 08/06/2005 11:27:10
#87662
Marcel

O SPLIT é uma função do VB que já te retorna uma Matriz, use ele que verá que é fácil.

Se tu já consegue a posição das vírgulas então ADICIONE UM AO PONTEIRO, na InSTr, assim deve conseguir.
[s50]
USUARIO.EXCLUIDOS 08/06/2005 11:31:42
#87665
valeu cara, mas eu preciso fazer sem usar array
apenas usando mid e instr
tem como?
^abraços
USUARIO.EXCLUIDOS 08/06/2005 11:55:33
#87672
Resposta escolhida
Não! você pode usar um Array, Split e For Next... apenas isso...
Marcel, acabei de bolar um exemplo bem prático... se na string tiver o seguinte
"2,5,4,6,1"
O resultado será
Em primeiro lugar 1
Em segundo lugar 2
Em terceiro lugar 4
Em quarto lugar 5
Em quinto lugar 6

Se for "1,9,10,2"
Em primeiro lugar 1
Em segundo lugar 2
Em terceiro lugar 9
Em quarto lugar 10
...
[txt-backcolor=#ffff00]é isso que você quer? desdobrar, classificar e ordenar números em uma string?
Se for isso aqui vai o exemplo:[/txt-backcolor]
Dim valor(10) As String
Dim texto As String
Dim stexto As Variant
texto = "5,6,1,3,10"
stexto = Split(texto, ",")
For i = LBound(stexto) To UBound(stexto)
valor(stexto(i)) = stexto(i)
contador = i
Next i
For i = 1 To 10
If Not valor(i) = "" Then
MsgBox "Em " & i & "º Lugar está o N.º '" & valor(i) & "'"
End If

Entendeu?
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas