Foro de elhacker.net

Programación => 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
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
  1. A=Array("a","b","c","d","e","f")
  2. B=Array("a","c","d")
  3.  
  4.  
  5. For i = 0 to Ubound(B)
  6.  
  7. A = Filter(A,B(i),False,1)
  8.  
  9. Next
  10.  
  11. For i = 0 to Ubound(A)
  12.  
  13. MsgBox A(i)
  14.  
  15. 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
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.    MsgBox "-->" & DiferenciaArray(" a,  b,  c ,d, e, f  ", "  a, b, c ") & "<--"
  5. End Sub
  6.  
  7. Function DiferenciaArray(ByRef s1 As String, ByRef s2 As String, Optional ByVal separador As String = ",") As Variant
  8. Dim A_Split As Variant
  9. Dim B_Split As Variant
  10. Dim i       As Long
  11.  
  12.    A_Split = Split(Replace(s1, " ", ""), separador)
  13.    B_Split = Split(Replace(s2, " ", ""), separador)
  14.  
  15.    For i = LBound(B_Split) To UBound(B_Split)
  16.        A_Split = Filter(A_Split, B_Split(i), False, vbTextCompare)
  17.    Next
  18.  
  19.    DiferenciaArray = Join(A_Split, separador)
  20. End Function
  21.  

Dulces Lunas!¡.