• Domingo 22 de Diciembre de 2024, 23:47

Autor Tema:  Re: Trabajar con vectores  (Leído 1213 veces)

Empar

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Trabajar con vectores
« en: Lunes 9 de Diciembre de 2002, 10:26 »
0
Hola que tal,

mi pregunta es la siguiente: quiero crear un vector que inicialmente esté vacío e ir añadiendo elementos, pero cada vez que añada un nuevo elemento quiero comprobar que este no forme parte de los que ya hay. He estado probando diferentes formas de hacerlo pero siempre me da un error, he hecho algo así:

otra_vez:
i = Int((19 - 0 + 1) * Rnd + 0)

For X = 0 To j
    If v(X) = i Then GoTo otra_vez
Next X
j=j+1
v(j)=i

javierbalk

  • Miembro MUY activo
  • ***
  • Mensajes: 142
  • Nacionalidad: 00
    • Ver Perfil
    • Print preview y grabar PDF en Visual Basic 6
Trabajar con vectores
« Respuesta #1 en: Lunes 9 de Diciembre de 2002, 17:46 »
0
Hola Empar:

Te hice un ejemplo, para probarlo abre un proyecto nuevo, coloca un botón de comando y pega el sig. código:

'*****************************
Dim v() As Long

Option Explicit

Private Sub Command1_Click()
    Dim Texto As String
    Dim X As Long
   
    AgregarElemento
    For X = 1 To UBound(v)
        Texto = Texto & v(X) & vbCrLf
    Next
    MsgBox Texto
End Sub

Private Sub AgregarElemento()
    Dim I As Long
    Dim X As Long
    Dim YaExiste As Boolean
    Dim NuevoIndice As Long
   
    I = Int(Rnd * 19) ' cambiar por lo que sea
    YaExiste = True
    Do Until Not YaExiste
        YaExiste = False
        For X = 1 To UBound(v)
            If v(X) = I Then
                YaExiste = True
                I = Int(Rnd * 19) ' cambiar por lo que sea
                Exit For
            End If
        Next
    Loop
   
    NuevoIndice = UBound(v) + 1
    ReDim Preserve v(NuevoIndice)
    v(NuevoIndice) = I
End Sub

Private Sub Form_Load()
    ReDim v(0) ' inicializo el vector con la posicón 0 que luego nuca uso, lo voy a usar a partir de la 1, pero hago esto para que despues ya esté inicializado y no me de error
End Sub
'*****************************

Tené en cuenta que por ejemplo, en este caso, una vez que ya hay 19 elementos ingresados se queda indefinidamente buscando cual agregar, pero resulta que como ya están los 19 no encuentra uno que no esté y no sale más del loop, si en tu caso puede pasar algo parecido tendrías que ponerle una validación o protección para que eso no ocurra.

Saludos,
Javier