Foros del Web » Programación para mayores de 30 ;) » Programación General »

¿Como hariais este bucle? (for, while, if...)

Estas en el tema de ¿Como hariais este bucle? (for, while, if...) en el foro de Programación General en Foros del Web. Tengo 2 listas de nombres. Para cada uno de la 1ª recorra la 2ª lista. Si encuentra el mismo nombre, la variable "Encontrado" se incrementa ...
  #1 (permalink)  
Antiguo 15/06/2004, 02:21
 
Fecha de Ingreso: enero-2004
Mensajes: 58
Antigüedad: 20 años, 3 meses
Puntos: 0
¿Como hariais este bucle? (for, while, if...)

Tengo 2 listas de nombres.
Para cada uno de la 1ª recorra la 2ª lista.
Si encuentra el mismo nombre, la variable "Encontrado" se incrementa y pasa al siguiente nombre de la lista 1.
Si no lo encuentra y llega al final de la lista 2, continua con el siguiente de la lista 1.

Ahora si que si:

For Index = 0 To (FilArchivos.ListCount - 1) 'Desde 0 hasta el nº de ficheros de carpeta FUENTE
FilArchivos.ListIndex = Index 'Coloco el puntero en el 1er fichero de lista1
Index2 = 0 'Reseteo el indice
FilOrigen.ListIndex = Index2 'Coloco el puntero en el 1er fichero de lista2
Encontrado = 0 'Reseteo la variable encontrado
While (Encontrado <> 1) And (Index2 < FilOrigen.ListCount) 'Mientras no encuentre el fichero y queden ficheros por comprobar en lista2
FilOrigen.ListIndex = Index2
If (FilArchivos.FileName <> FilOrigen.FileName) Then 'Si son nombres distintos, pasa al siguiente de lista2
Index2 = Index2 + 1
Else
Encontrado = Encontrado + 1
NumeroFich = NumeroFich + 1
End If
'If (NumeroFich = FilOrigen.ListCount) Then
' Index = FilArchivos.ListCount - 1
'End If
Wend
Next Index

Busco que si encuentra todos los ficheros en la 2ª lista, no siga buscando los restantes de la lista 1.

SALU2.

Última edición por DARK_OZMA; 15/06/2004 a las 03:40
  #2 (permalink)  
Antiguo 15/06/2004, 08:33
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Has probado a cambiar el While del segundo bucle con un 'Do While...' (y el Wend por un Loop, claro). De esta forma, cuando lo encuentres puedes hacer...

Código:
...
Encontrado = Encontrado + 1
NumeroFich = NumeroFich + 1
exit do
...
y no seguir dando vueltas.

De todas formas, el bucle es algo raro, deja que lo medite bien. ¿Estás usando dos fileListBox?
__________________
Kelpie

Última edición por Kelpie; 15/06/2004 a las 08:34
  #3 (permalink)  
Antiguo 15/06/2004, 08:51
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
Hola la respspuesta que esta abajo espero que te sirva

Última edición por rsiles; 15/06/2004 a las 08:58
  #4 (permalink)  
Antiguo 15/06/2004, 08:56
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
Private Sub Command1_Click()
Dim contador_lista1 As Integer
Dim contador_lista2 As Integer
Dim incremento_1 As Integer
Dim incremento_2 As Integer
Dim elemento_buscar
Dim elemento_comparar
Dim compara
Dim encontrado As Integer

List1.AddItem "ramon"
List1.AddItem "carol"
List1.AddItem "claudia"

List2.AddItem "pepe"
List2.AddItem "pedro"
List2.AddItem "ramon"
List2.AddItem "lucas"
List2.AddItem "carol"
List2.AddItem "ester"


contador_lista1 = List1.ListCount
contador_lista2 = List2.ListCount

For incremento_1 = 0 To contador_lista1 - 1
elemento_buscar = List1.List(incremento_1)
For incremento_2 = 0 To contador_lista2 - 1
elemento_comparar = List2.List(incremento_2)
compara = StrComp(elemento_buscar, elemento_comparar, 1)
If compara = 0 Then
encontrado = encontrado + 1
Exit For
End If
Next incremento_2
incremento_2 = 0
Next incremento_1
MsgBox encontrado
End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.