Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: kenrigls en 10 Abril 2014, 11:01 AM

Título: programa de conjuntos
Publicado por: kenrigls en 10 Abril 2014, 11:01 AM
como haria para que
un programa me resuelva la diferencia entre dos conjuntos
dado que el conjunto A es una cadena (text1) en donde estan todos los elementos separados por comas al igual que B (text2)

A={a,b,c,d,e,f}

B={a,c,d}

la diferencia A-B son todos los elementos que estan A pero que no esten B
y el resultado lo devuelva en otra cadena(text3) separados por comas

A-B={b,e,f}

y si no es molestia tambien la interseccion
como lo haria? :huh: mucho mejor si me contestan a la brevedad que mañana tengo una prueba!!! :-(

gracias por sus respuestas
Título: Re: programa de conjuntos
Publicado por: Mad Antrax en 10 Abril 2014, 14:20 PM
Cita de: kenrigls en 10 Abril 2014, 11:01 AM
como haria para que
un programa me resuelva la diferencia entre dos conjuntos
dado que el conjunto A es una cadena (text1) en donde estan todos los elementos separados por comas al igual que B (text2)

A={a,b,c,d,e,f}

B={a,c,d}

la diferencia A-B son todos los elementos que estan A pero que no esten B
y el resultado lo devuelva en otra cadena(text3) separados por comas

A-B={b,e,f}

y si no es molestia tambien la interseccion
como lo haria? :huh: mucho mejor si me contestan a la brevedad que mañana tengo una prueba!!! :-(

gracias por sus respuestas

Aquí lo tienes. Se utiliza la función FILTER(), devuelve un array filtrando otro array existente:

Código (vb) [Seleccionar]
A=Array("a","b","c","d","e","f")
B=Array("a","c","d")


For i = 0 to Ubound(B)

A = Filter(A,B(i),False,1)

Next

For i = 0 to Ubound(A)

MsgBox A(i)

Next


El de inserción es más sencillo, así que te lo dejo para que lo pienses un poco.

Un saludo

REF: http://ss64.com/vb/filter.html
Título: Re: programa de conjuntos
Publicado por: BlackZeroX en 11 Abril 2014, 08:46 AM
Algo similar a lo que Mad Antrax dice pero implementado en una función...

Código (vb) [Seleccionar]

Option Explicit

Private Sub Form_Load()
    MsgBox "-->" & DiferenciaArray(" a,  b,  c ,d, e, f  ", "  a, b, c ") & "<--"
End Sub

Function DiferenciaArray(ByRef s1 As String, ByRef s2 As String, Optional ByVal separador As String = ",") As Variant
Dim A_Split As Variant
Dim B_Split As Variant
Dim i       As Long

    A_Split = Split(Replace(s1, " ", ""), separador)
    B_Split = Split(Replace(s2, " ", ""), separador)
   
    For i = LBound(B_Split) To UBound(B_Split)
        A_Split = Filter(A_Split, B_Split(i), False, vbTextCompare)
    Next
   
    DiferenciaArray = Join(A_Split, separador)
End Function


Dulces Lunas!¡.