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
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:
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
Algo similar a lo que Mad Antrax dice pero implementado en una función...
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!¡.