Visual Basic.NET - Comparar arreglos

 
Vista:

Comparar arreglos

Publicado por haf (178 intervenciones) el 13/03/2007 21:38:38
Hola amigos del foro,
Tengo 2 arreglos (vectores) y cada uno con dimensiones diferentes.
En ambos arreglos pueden haber valores idénticos.
Lo que Necesito es a partir de los valores (que son tipo texto) de ambos arrglos generar un tercer arreglo donde no se incluyan los duplicados.
Me explico:

Dim LINEA1(3) As String
Dim LINEA2(4) As String
Dim LINEA3(100) As String

LINEA1(1)="ABC"
LINEA1(2)="CDE"
LINEA1(3)="EFG"

LINEA2(1)="123"
LINEA2(2)="ABC"
LINEA2(3)="CDE"
LINEA2(4)="CDE"


LO QUE NECESITO ES QUE SE QUEDE DE ESTA MANERA PARA METERLO EN UN ARCHIVO DE TEXTO:

LINEA3(1)="ABC"
LINEA2(2)="CDE"
LINEA3(3)="EFG"
LINEA3(4)="123" ' (No incluir "CDE" ni "ABC" porque se repiten)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparar arreglos

Publicado por javi (4 intervenciones) el 14/03/2007 12:15:30
Tengo una solucion pero de forma iterativa y seguramente no sea muy efectiva, porque esta hecha con bastantes bucles.
Pensare una forma recursiva para hacer la misma solucion.

Aqui esta la solucion:

Imports System.Collections.ArrayList

Module comparaVectores

Dim Linea1 ( 3 ) As String
Dim Linea2 ( 4 ) As String
' Como no sabrás cuantos elementos tendra Linea3, es mejor no
' reservar memoria utilizando un vector, es preferible utilizar un ArrayList e
' ir añadiendole elementos.
Dim Linea3 As New ArrayList ( )

Dim i As Integer
Dim j As Integer
Dim esta As Boolean

Sub Main ( )

Linea1 ( 1 )="ABC"
Linea1 ( 2 )="CDE"
Linea1 ( 3 )="EFG"

Linea2 ( 1 )="123"
Linea2 ( 2 )="ABC"
Linea2 ( 3 )="CDE"
Linea2 ( 4 )="CDE"

Linea3.Add( Linea1( 1 ) )

i = 0

' insertamos en Linea3 los elementos no repetidos de Linea1

While ( i < Linea1.Length )

esta = False

j = 0

While ( j < Linea3.Count And Not esta )

' vamos comparando cada uno de los elementos del vector Linea1
' con todos los elementos del vector Linea3.
' Si son iguales pasamos al siguiente elemento del vector Linea3

If ( Linea1 ( i ) = Linea3.Item ( j ) ) Then

esta = True

End If

j = j + 1

End While

' Si el elemento de Linea1 que hemos comparado con todos los elementos
' de Linea3 no ha sido igual a ninguno, tenemos que insertarlo en Linea3

If Not ( esta ) Then

Linea3.Add ( Linea1 ( i ) )

End If

i = i + 1

End While

' insertamos en Linea3 los elementos no repetidos de Linea2 haciendo
' exactamente lo mismo que antes para Linea1

' inicializamos de nuevo la variable i

i = 1

While ( i < Linea2.Length)

esta = False

j = 0

While ( j < Linea3.Count And Not esta)

If ( Linea2 ( i ) = Linea3.Item( j ) ) Then

esta = True

End If

j = j + 1

End While

If Not ( esta ) Then

Linea3.Add( Linea2 ( i ) )

End If

i = i + 1

End While

'Sacamos por pantalla el vector Linea3

Dim h As Integer

For h = 0 To Linea3.Count - 1

Console.WriteLine( Linea3.Item ( h ) )

Next

' Este mensaje lo ponemos para que nos de tiempo a visualizar en la
' consola el resultado del vector Linea3.
MsgBox("")

End Sub

End Module

Espero que te haya servidor.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comparar arreglos

Publicado por Haf (178 intervenciones) el 14/03/2007 13:15:32
Muchisimas Gracias Javi de Verdad y por sobre todo por tu paciencia.
Lo voy a probar y te escribo.
Muchas gracias nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar