You are on page 1of 3

Set.

java
1 // Implementacin del TAD Conjunto de Enteros
2 // Fecha: 25/02/2013 1:24 a.m.
3 // Autor: MTI. Jorge Carranza Gmez
4 // IDE: Eclipse SDK
5
6 // Implementaciones adicionales:
7 // Incluir en la clase un atributo que almacene el Nombre del Conjunto, para
8 // imprimirlo en el mtodo Print()
9
10 public class Set{
11
enum ErrCode { noErr, overflow };
12
final int MaxCard = 16;
13
// Declaracin de los datos de la clase
14
15
String Nombre;
16
int elems[ ] = new int[ MaxCard ];
17
int Card;
18
19
// Constructor de clase
20
21
public Set( String N ){
22
Nombre = N;
23
Card = 0;
24
}
25
26
// Implementacin de las funciones miembro de la clase
27
28
// Mtodo emptySet()
29
30
public void emptySet( ){
31
Card = 0;
32
}
33
34
// Mtodo Member(), Verifica si un elemento es miembro del conjunto
35
// Devuelve un true en caso afirmativo y false en caso contrario
36
37
public boolean Member( int elem ){
38
for( int i = 0; i < Card; i++ )
39
if( elems[ i ] == elem )
40
return true;
41
return false;
42
}
43
44
// Implementacin del mtodo AddElem(), se intenta agregar un nuevo
45
// elemento al conjunto siempre que ste no exista en el conjunto
46
47
public ErrCode AddElem ( int elem ){
48
if( Member ( elem ) )
49
return Set.ErrCode.noErr;
50
if( Card < MaxCard ){
51
elems[ Card++ ] = elem;
52
return Set.ErrCode.noErr;
53
} else
54
return Set.ErrCode.overflow;
55
}
56
57
// Implementacin del mtodo que imprime los elementos del conjunto
Page 1

Set.java
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

// Imprimir los elementos que forman al conjunto


public void Print( ){
System.out.printf( "%s: {", Nombre );
for ( int i = 0; i < Card - 1; i++ )
System.out.printf( "%d %s", elems[i], ", " );
if ( Card > 0 )
System.out.printf( "%d", elems[ Card - 1 ] );
System.out.print( "} \n" );
return;
}
// Copiar los elementos del conjunto a otro conjunto
// Los elementos del conjunto que hace la llamada, se copian al
// conjunto que fue pasado como argumento.
public void Copy( Set set ){
for( int i = 0; i < Card; i++ )
set.elems[ i ] = elems[ i ];
set.Card = Card;
}
// Eliminar un elemento del conjunto
public void RmvElem( int elem){
for ( int i = 0; i < Card; i++ )
if (elems[ i ] == elem){
for ( ; i < Card - 1; i++ )
elems[ i ] = elems[ i + 1 ];
Card--;
}
}
// Determina si dos conjuntos son iguales
public boolean Equal( Set set ){
if( Card != set.Card )
return false;
for( int i = 0; i < Card; i++ )
if( !set.Member( elems[ i ] ) )
return false;
return true;
}
/*
Mtodo Union( )
Agrega los elementos del Conjunto C1 y luego agrega los elementos del
conjunto C2 Utilizando el mtodo AddElem(), que verifica que los
elementos no se repitan.
*/
public void Union(Set C1, Set C2){
int i, j;
emptySet( );
// Elimina todos los elemnetos del conjunto
for(i = 0; i < C1.Card; ++i)
AddElem(C1.elems[i]);
for(j = 0; j < C2.Card; ++j)
Page 2

Set.java
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 }

AddElem(C2.elems[j]);
}
/*
Mtodo Intersect( )
Agrega al conjunto del objeto que hace la llamada los elementos que son
comunes en ambos conjuntos
*/
public void Intersect(Set C1, Set C2 ){
emptySet( ); // Elimina los elementos del conjunto
for( int i = 0; i < C1.Card; ++i)
if(C2.Member(C1.elems[i]))
AddElem(C1.elems[i]);
}
public void Diferencia(Set C1, Set C2){
emptySet( ); // Elimina los elementos del conjunto
for( int i = 0; i < C1.Card; ++i)
if(C2.Member(C1.elems[i])==false)
AddElem(C1.elems[i]);
}
// Mtodo de inicio de la clase.
public static void main(String[] args){
System.out.println("Bienvenido a la Programacin en JAVA");
// Crear una instancia de los objetos S1, S2 y S3 a la clase Set
Set S1 = new Set("S1"), S2 = new Set("S2"), S3 = new Set("S3");
Set S4 = new Set("S4");
S1.AddElem(3); S1.AddElem(5); S1.AddElem(7);
S2.AddElem(9); S2.AddElem(3); S2.AddElem(4);
S1.Print();
S2.Print();
//S3 = S1;
S1.Copy(S3);
S3.RmvElem(5);
S3.Print();
S1.Print();
if(S3 == S1)
System.out.println("\n S1 y S3 son iguales");
else
System.out.println("\n S1 y S3 son diferentes");
// Interseccin entre S1 y S2
S4.Intersect(S1, S2);
S4.Print();
}

Page 3