Hola a todos
tengo un archivo .txt que desarrille en visual basic 6.0 de 100 numeros mostrados asi
15
14
27
45
78
41
35
69
48
.
.
.
quiero traer 5 numeros cualquiera pero que sean del 1 hasta el 15
el orden no importa
agradezco sus valisas respuestas
Hola.
La solución secuencial es así:
Dim handle As Integer,
resultados(4) As Integer,
encontrados As Integer
handle = FreeFile()
Open "elArchivo.txt" For Input As #handle
encontrados = 0
Do While Not EOF(handle)
Dim elNumero As Integer
Input #handle, elNumero
If elNumero >= 1 And elNumero <= 15 Then
resultados(encontrados) = elNumero
elNumero = elNumero > 1
If elNumero = 5 Then Exit Do
End If
Loop
el problema es que siempre vas a obtener los mismos cinco números, y probablemente eso no es lo que quieres.
Si lo que necesitas es obtener N números de los contenidos en el archivo con un rango entre min y max el procedimiento es otro: en primer lugar extraes TODOS los numeros entre min y max y luego obtienes N números al azar de este conjunto.
Const MINIMO = 1
Const MAXIMO = 15
Const N = 5
Dim handle As Integer,
contenido() As Integer, nNumeros As Integer
' Cargar TODOS los números a un arreglo.
handle = FreeFile()
Open "elArchivo.txt" For Input As #handle
Redim contenido(100)
Do While Not EOF(handle)
Input #handle, elNumero
If elNumero >= MINIMO And elNumero <= MAXIMO Then
If nNumeros > UBound(contenido) Then
Redim Preserve contenido(UBound(contenido) + 100)
End If
contenido(nNumeros) = elNumero
nNumeros = nNumeros + 1
End If
Loop
If nNumeros Then Redim Preserve contenido(nNumeros - 1)
close handle
Dim resultado() As Integer, extraidos As Integer
Redim resultado(N - 1)
extraidos = 0
Dim indice As Integer
Do While extraidos < N
If nNumeros = 0 Then Exit Do
' podría haber MENOS de N numeros que satisfagan el criterio
indice = Int(rnd() * nNumeros)
resultado(extraidos) = contenido(indice)
extraidos = extraidos + 1
Dim i As Integer
' reempacar el arreglo:
For i = indice + 1 To nNumeros - 1
contenido(indice - 1) = contenido(indice)
Next
nNumeros = nNumeros - 1
Loop
If extraidos < N Then Redim Preserve resultado(extraidos - 1)
Por fácil que parezca, nunca se está seguro de que un trozo de código funciona hasta que no se monta y se prueba. Y este no lo he probado, de modo que puede pasar cualquier cosa. ero por ahi debe andar tu solucion.
Salud!