Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica02 - Lab131
Práctica02 - Lab131
PRACTICA N° 2
EJERCICIO 1
a) Enunciado
Dada una Pila de enteros:
a) Colocar al principio los datos únicos y luego los repetidos.
b) Diagrama de Clases
Entero
- entero: int
+ entero()
+ entero(entero)
+ getters()
+ setters()
+ leerE():void
+ mostrarE():void
PilaEnteros + leerE(): void
+ mostrarE():void
- n: int
- tope: int
- v[]: Entero
+ PilaEnteros()
+ esVacia(): boolean
+ esLlena(): boolean
+ adicionar(it:entero): void
+ eliminar: Entero
+ llenar():void
+ mostrar(): void
+ vaciar(z: PilaEnteros):void
c) Código Java
Main
System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION 1
.....................................");
solucion1(pe);
pe.mostrar();
System.out.println(".......................................................
..............................");
// SOLUCION 1
private static void solucion1(PilaEnteros PE) {
PilaEnteros aux1 = new PilaEnteros();
PilaEnteros aux2 = new PilaEnteros();
PilaEnteros R = new PilaEnteros();
while (! PE.esVacia()) {
Entero elem1 =PE.eliminar();
while(! PE.esVacia()) {
Entero elem2=PE.eliminar();
if(elem1.getEntero() == elem2.getEntero()) {
R.adicionar(elem2);
}
else {
aux2.adicionar(elem2);
}
}
PE.vaciar(aux2);
aux1.adicionar(elem1);
}
PE.vaciar(aux1);
agruparRepetidos(PE,R);
}
// AGRUPAR ENTEROS REPETIDOS
private static PilaEnteros agruparRepetidos(PilaEnteros PE, PilaEnteros R)
{
PilaEnteros aux1 = new PilaEnteros();
PilaEnteros aux2 = new PilaEnteros();
PilaEnteros Q = new PilaEnteros();
while (!R.esVacia()) {
Entero elem1=R.eliminar();
while (!PE.esVacia()) {
Entero elem2=PE.eliminar();
if(elem1.getEntero()==elem2.getEntero()) {
Q.adicionar(elem2);
}
else {
aux1.adicionar(elem2);
}
}
PE.vaciar(aux1);
aux2.adicionar(elem1);
}
R.vaciar(aux2);
R.vaciar(Q);
PE.vaciar(ordenarRepetidos(R));
return PE;
}
while (!Q.esVacia()) {
Entero e1=Q.eliminar();
while (!Q.esVacia()) {
Entero e2=Q.eliminar();
if(e1.getEntero()==e2.getEntero()) {
R.adicionar(e2);
}
else {
aux.adicionar(e2);
}
}
R.adicionar(e1);
Q.vaciar(aux);
}
Q.vaciar(R);
return Q;
}
}
Clase Pilas
PilaEnteros(){
tope = 0;
max = 100;
v = new Entero[max+1];
}
System.out.println("*******************************************************
******************************");
PilaEnteros aux = new PilaEnteros ();
while (!esVacia ()){
Entero elem = eliminar ();
aux.adicionar (elem);
elem.mostrarL();
}
vaciar(aux);
System.out.println("*******************************************************
******************************");
}
}
void llenar(int n) {
for(int i=1; i<=n;i++) {
Entero elem = new Entero();
elem.leerL();
adicionar(elem);
}
}
Tela
- marca: String
- color: String
- precio: double
+ entero()
+ entero(entero)
+ getters()
+ setters()
PilaTelas + leerE():void
+ mostrarE():void
- n: int + leerE(): void
- tope: int + mostrarE():void
- v[]: Tela
+ PilaEnteros()
+ esVacia(): boolean
+ esLlena(): boolean
+ adicionar(it:entero): void
+ eliminar: Entero
+ llenar():void
+ mostrar(): void
+ vaciar(z: PilaTelas):void
c) Codigo JAVA
Main
public class Main {
System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION A
.....................................");
solucionA(pt);
System.out.println(".......................................................
..............................");
System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION B
.....................................");
solucionB(pt);
System.out.println(".......................................................
..............................");
System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION C
.....................................");
System.out.print("Buscar COLOR (Z) ---> ");
String z = teclado.nextLine();
solucionC(pt,z);
System.out.println(".......................................................
..............................");
}
// SOLUCION A
private static void solucionA(PilaTelas PT) {
int mayorColor = obtenerColorPredomina(PT);
PilaTelas auxZ = new PilaTelas();
while (!PT.esVacia()) {
Tela elem = PT.eliminar();
int coCO = contadorColor(PT, elem.getColor());
if(coCO == mayorColor) {
elem.mostrarT();
}
auxZ.adicionar(elem);
}
PT.vaciar(auxZ);
}
while (!PT.esVacia()) {
Tela elem = PT.eliminar();
int coCO = contadorColor(PT, elem.getColor());
if(coCO > mayor) {
mayor = coCO;
}
aux.adicionar(elem);
}
PT.vaciar(aux);
return mayor;
}
while (!PT.esVacia()) {
Tela elem = PT.eliminar();
if(elem.getColor() == color) {
contador++;
}
aux.adicionar(elem);
}
PT.vaciar(aux);
return contador;
}
// SOLUCION B
private static void solucionB(PilaTelas PT) {
PilaTelas aux = new PilaTelas();
double contador = 0;
while (!PT.esVacia()) {
Tela elem = PT.eliminar();
contador=contador+elem.getPrecio();
aux.adicionar(elem);
}
PT.vaciar(aux);
System.out.println("Costo Total (Telas)"+"\n"+"TOTAL: "+contador+"
bs.");
}
// SOLUCION C
private static void solucionC(PilaTelas PT, String Z) {
PilaTelas aux = new PilaTelas();
while (!PT.esVacia()) {
Tela elem = PT.eliminar();
if(elem.getColor().equalsIgnoreCase(Z)) {
System.out.println("MARCA: "+elem.getMarca());
}
}
PT.vaciar(aux);
}
}
Clase Tela
public class Tela {
private String marca;
private String color;
private double precio;
// Getters y Setters
public String getMarca() {
return marca;
}
//To String
@Override
public String toString() {
return "Tela [marca=" + marca + ", color=" + color + ", precio=" +
precio + "]";
}
//System.out.println("*****************************************************
***************************" );
System.out.println(toString());
}
}
Clase PilaTelas
PilaTelas(){
tope = 0;
max = 100;
v = new Tela[max+1];
}
System.out.println("*******************************************************
******************************");
PilaTelas aux = new PilaTelas ();
while (!esVacia ()){
Tela elem = eliminar ();
aux.adicionar (elem);
elem.mostrarT();
}
vaciar(aux);
System.out.println("*******************************************************
******************************");
}
}
void llenar(int n) {
for(int i=1; i<=n;i++) {
Tela elem = new Tela();
elem.leerT();
adicionar(elem);
}
}
Entero
- entero: int
+ entero()
+ entero(entero)
+ getters()
+ setters()
+ leerE():void
+ mostrarE():void
PilaEnteros + leerE(): void
+ mostrarE():void
- n: int
- tope: int
- v[]: Entero
+ PilaEnteros()
+ esVacia(): boolean
+ esLlena(): boolean
+ adicionar(it:entero): void
+ eliminar: Entero
+ llenar():void
+ mostrar(): void
+ vaciar(z: PilaEnteros):void
c) Codigo JAVA
Main
public class Main {
/* Dada dos pilas con numeros enteros, se pide generar otra pila de
modo que a un par le siga un impar.
* Nota las pilas deben tener el mismo numero de elementos*/
System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION 1
.....................................");
solucion1(A,B);
System.out.println("\n.....................................................
................................");
A.adicionar(new Entero(4));
A.adicionar(new Entero(6));
A.adicionar(new Entero(2));
A.adicionar(new Entero(8));
A.adicionar(new Entero(1));
A.adicionar(new Entero(3));
B.adicionar(new Entero(10));
B.adicionar(new Entero(9));
B.adicionar(new Entero(7));
B.adicionar(new Entero(4));
B.adicionar(new Entero(8));
B.adicionar(new Entero(5));
}
// MOSTRAR PILA
private static void mostrarPila(PilaEnteros B) {
PilaEnteros aux = new PilaEnteros();
PilaEnteros v = new PilaEnteros();
v.vaciar(B);
System.out.print("[");
while(!v.esVacia()) {
Entero elem = v.eliminar();
System.out.print(elem.getEntero()+", ");
aux.adicionar(elem);
}
v.vaciar(aux);
System.out.print("]");
}
// SOLUCION 1
private static void solucion1(PilaEnteros A, PilaEnteros B) {
System.out.println("SALIDA");
mostrarPila(seleccionarParImpar(A, B));
}
while(!A.esVacia()) {
Entero elem1=A.eliminar();
if(elem1.getEntero()%2==0){
par.adicionar(elem1);
}
else {
impar.adicionar(elem1);
}
}
while(!B.esVacia()) {
Entero elem2=B.eliminar();
if(elem2.getEntero()%2==0){
par.adicionar(elem2);
}
else {
impar.adicionar(elem2);
}
}
A.vaciar(par);
B.vaciar(impar);
return (intercalarP(A, B));
}
//FUNCION INTERCALAR
private static PilaEnteros intercalarP(PilaEnteros par, PilaEnteros impar)
{
int n=(par.nroElem()+impar.nroElem());
PilaEnteros aux1 = new PilaEnteros();
PilaEnteros aux2 = new PilaEnteros();
PilaEnteros R = new PilaEnteros();
for(int i=0;i<=(n);i++) {
if(i%2==0) {
par.vaciar(aux1);
while (!par.esVacia()) {
Entero elemP=par.eliminar();
R.adicionar(elemP);
aux1.vaciar(par);
}
}
else {
impar.vaciar(aux2);
while (!impar.esVacia()) {
Entero elemI=impar.eliminar();
R.adicionar(elemI);
aux2.vaciar(impar);
}
}
}
return R;
}
}
Clase Entero
// Getters y Settesr
public int getEntero() {
return entero;
}
//To String
@Override
public String toString() {
return "Entero [entero=" + entero + "]";
}
//System.out.println("*****************************************************
***************************" );
System.out.println(toString());
}
}
Clase PilaEnteros
PilaEnteros(){
tope = 0;
max = 100;
v = new Entero[max+1];
}
System.out.println("*******************************************************
******************************");
PilaEnteros aux = new PilaEnteros ();
while (!esVacia ()){
Entero elem = eliminar ();
aux.adicionar (elem);
elem.mostrarL();
}
vaciar(aux);
System.out.println("*******************************************************
******************************");
}
}
void llenar(int n) {
for(int i=1; i<=n;i++) {
Entero elem = new Entero();
elem.leerL();
adicionar(elem);
}
}