Codigo TAD Conjunto de Enteros Java
-
Upload
benjamin-lopez -
Category
Documents
-
view
7 -
download
2
description
Transcript of Codigo TAD Conjunto de Enteros Java
-
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 // Imprimir los elementos que forman al conjunto
59
60 public void Print( ){
61 System.out.printf( "%s: {", Nombre );
62 for ( int i = 0; i < Card - 1; i++ )
63 System.out.printf( "%d %s", elems[i], ", " );
64 if ( Card > 0 )
65 System.out.printf( "%d", elems[ Card - 1 ] );
66 System.out.print( "} \n" );
67 return;
68 }
69
70 // Copiar los elementos del conjunto a otro conjunto
71 // Los elementos del conjunto que hace la llamada, se copian al
72 // conjunto que fue pasado como argumento.
73
74 public void Copy( Set set ){
75 for( int i = 0; i < Card; i++ )
76 set.elems[ i ] = elems[ i ];
77 set.Card = Card;
78 }
79
80 // Eliminar un elemento del conjunto
81
82 public void RmvElem( int elem){
83 for ( int i = 0; i < Card; i++ )
84 if (elems[ i ] == elem){
85 for ( ; i < Card - 1; i++ )
86 elems[ i ] = elems[ i + 1 ];
87 Card--;
88 }
89 }
90
91 // Determina si dos conjuntos son iguales
92
93 public boolean Equal( Set set ){
94 if( Card != set.Card )
95 return false;
96 for( int i = 0; i < Card; i++ )
97 if( !set.Member( elems[ i ] ) )
98 return false;
99 return true;
100 }
101
102 /*
103 Mtodo Union( )
104 Agrega los elementos del Conjunto C1 y luego agrega los elementos del
105 conjunto C2 Utilizando el mtodo AddElem(), que verifica que los
106 elementos no se repitan.
107 */
108
109 public void Union(Set C1, Set C2){
110 int i, j;
111 emptySet( ); // Elimina todos los elemnetos del conjunto
112 for(i = 0; i < C1.Card; ++i)
113 AddElem(C1.elems[i]);
114 for(j = 0; j < C2.Card; ++j)
Page 2
-
Set.java
115 AddElem(C2.elems[j]);
116 }
117
118 /*
119 Mtodo Intersect( )
120 Agrega al conjunto del objeto que hace la llamada los elementos que son
121 comunes en ambos conjuntos
122 */
123
124 public void Intersect(Set C1, Set C2 ){
125 emptySet( ); // Elimina los elementos del conjunto
126 for( int i = 0; i < C1.Card; ++i)
127 if(C2.Member(C1.elems[i]))
128 AddElem(C1.elems[i]);
129 }
130
131 public void Diferencia(Set C1, Set C2){
132 emptySet( ); // Elimina los elementos del conjunto
133 for( int i = 0; i < C1.Card; ++i)
134 if(C2.Member(C1.elems[i])==false)
135 AddElem(C1.elems[i]);
136 }
137
138 // Mtodo de inicio de la clase.
139
140 public static void main(String[] args){
141 System.out.println("Bienvenido a la Programacin en JAVA");
142
143 // Crear una instancia de los objetos S1, S2 y S3 a la clase Set
144
145 Set S1 = new Set("S1"), S2 = new Set("S2"), S3 = new Set("S3");
146 Set S4 = new Set("S4");
147 S1.AddElem(3); S1.AddElem(5); S1.AddElem(7);
148 S2.AddElem(9); S2.AddElem(3); S2.AddElem(4);
149
150 S1.Print();
151 S2.Print();
152
153 //S3 = S1;
154
155 S1.Copy(S3);
156
157 S3.RmvElem(5);
158 S3.Print();
159 S1.Print();
160
161 if(S3 == S1)
162 System.out.println("\n S1 y S3 son iguales");
163 else
164 System.out.println("\n S1 y S3 son diferentes");
165
166 // Interseccin entre S1 y S2
167 S4.Intersect(S1, S2);
168 S4.Print();
169 }
170 }
Page 3