Crear la clase Conjunto de enteros, que será parecido a una lista sólo que no pueden existir elementos repetidos y da igual el orden en el que estén colocados los elementos. Tendrá las siguientes características:
- Atributos: una lista que contendrá los elementos que existen en el conjunto.
- Propiedades: el número de elementos que hay en el conjunto y una variable booleana que nos diga si está vacío o no.
- Métodos:
o Definir el operador + que será la unión de dos conjuntos.
o Definir el operador / que será la intersección de dos conjuntos.
o Definir el operador – que será la resta de conjuntos (los elementos del primer conjunto menos los que estén en el segundo conjunto).
o El método Vaciar que nos deja el conjunto vacío.
o El método Insertar que nos inserta un nuevo elemento en el conjunto.
o El método Borrar que nos borra un elemento del conjunto.
o El método Contiene que nos dice si el conjunto contiene ya el elemento en cuestión.
Class conjunto
Private lista As New List(Of Integer)
Public ReadOnly Property nelementos() As Integer
Get
Return (lista.Count)
End Get
End Property
Public ReadOnly Property estavacio() As Boolean
Get
If Me.lista Is Nothing Then
Return False
Else
Return True
End If
End Get
End Property
Public Sub New(ByVal lista As List(Of Integer))
Me.lista = lista
End Sub
Public Sub New()
End Sub
Public Shared Operator +(ByVal a As conjunto, ByVal b As conjunto) As conjunto
Dim nlista As New List(Of Integer)
Dim n As Integer
Dim s As New conjunto
For Each n In a.lista
s.lista.Add(n)
Next
For Each n In b.lista
If Not nlista.Contains(n) Then
s.lista.Add(n)
End If
Next
Return s
End Operator
Public Shared Operator -(ByVal a As conjunto, ByVal b As conjunto) As conjunto
Dim nlista As New List(Of Integer)
Dim n, m As Integer
Dim s As New conjunto
n = 0
m = 0
While n <= a.lista.Count - 1
While m <= b.lista.Count - 1
If a.lista.Item(n) = b.lista.Item(m) Then
a.lista.Remove(n)
Exit While
End If
m += 1
End While
n += 1
m = 0
End While
s.lista = a.lista
Return s
End Operator
Public Shared Operator /(ByVal a As conjunto, ByVal b As conjunto) As conjunto
Dim nlista As New List(Of Integer)
Dim n, m As Integer
Dim s As New conjunto
For Each n In a.lista
For Each m In b.lista
If n = m Then
s.lista.Add(n)
End If
Next
Next
Return s
End Operator
Public Sub vaciar_conjunto()
Me.lista.Clear()
End Sub
Public Sub inserta_elemento_conjunto(ByVal elemento As Integer)
Me.lista.Add(elemento)
End Sub
Public Sub borrar_elemento_conjunto(ByVal elemento As Integer)
Dim n As Integer = 0
While n < Me.nelementos
If Me.lista(n) = elemento Then
Me.lista.RemoveAt(n)
End If
n += 1
End While
End Sub
Public Function contiene_elemento_conjunto(ByVal elemento As Integer) As Boolean
Dim n As Integer
Dim r As Boolean = False
For Each n In Me.lista
If n = elemento Then
r = True
Exit For
End If
Next
Return r
End Function
End Class
Module Module1
Sub Main()
Dim l1 As New List(Of Integer)
Dim i As Integer
For i = 1 To 10
l1.Add(i)
Next
Dim l2 As New List(Of Integer)
For i = 2 To 32
l2.Add(i)
Next
Dim c1 As conjunto = New conjunto(l1)
Dim c2 As conjunto = New conjunto(l2)
Dim c3 As conjunto = New conjunto
Console.WriteLine("Conjunto A tiene {0} elementos.", c1.nelementos)
Console.WriteLine("Conjunto B tiene {0} elementos.", c2.nelementos)
c3 = c1 + c2
Console.WriteLine("Suma de los 2 conjuntos: {0} elementos.", c3.nelementos)
c3 = Nothing
c3 = c1 / c2
Console.WriteLine("Interseccion de los 2 conjuntos: {0} elementos.", c3.nelementos)
'vemos si contiene el elemento 8
Console.WriteLine("Vemos si contiene el elemento 8: " & c3.contiene_elemento_conjunto(8))
If Not c3.estavacio Then
Console.WriteLine("Borra el elemento 3 del conjunto."
c3.borrar_elemento_conjunto(3)
End If
Console.WriteLine("Ahora vaciamos un conjunto C. Que tiene {0} elementos.", c3.nelementos)
c3.vaciar_conjunto()
Console.WriteLine("Ahora comprobamos el conjunto C. Que tiene {0} elementos.", c3.nelementos)
Console.WriteLine()
Console.Write("Resta de conjunto A-B."
c3 = c1 - c2
Console.Write(" Resultado: {0} elementos.", c3.nelementos)
Console.WriteLine()
Console.ReadKey()
End Sub
End Module


