Está en la página 1de 7

UNIVERSIDAD MAYOR DE SAN ANDRES

Facultad de Ciencias Puras y Naturales


Carrera de Informática

Nombres y Apellidos: Eddy Gonzalo Ortiz Machicado Cedula de Identidad: 3469141 Lp.
Materia: Lab-131 Paralelo: B
Fecha: 01/Marzo/2023 Gestión: I - 2023
Docente: Lic. Victoria Hurtado Cerruto
Tema: Estructura de Datos (Pilas)

PRACTICA N° 1

a) Enunciado
Dada una pila de Libros donde los atributos de la clase Libro son Libro<autor, titulo, precio>
Determinar:
a) Cuántos libros tienen el autor (Z).
b) Cuáles son los libros más caros.
c) A cuánto asciende el valor de los libros.
b) Diagrama de Clases

Libro
- autor: String
- titulo: String
- precio: double
+ Libro()
+ Libro(autor, titulo, precio)
PilaLibros + getters()
+ setters()
- n: int + ToString()
- tope: int + leerL(): void
- v[]: Libro + mostrarL():void
+ PilaLibros()
+ esVacia(): boolean
+ esLLena(): boolean
+ adicionar(it:Libro): void
+ eliminar(): Libro
+ llenar(): void
+ mostrar(): void
+ vaciar(z: PilaLibros):
c) Código Java
Main

public class Main {

public static void main(String[] args) {


Scanner teclado = new Scanner(System.in);
PilaLibros pl = new PilaLibros();

// Cargar Libros
cargarPila(pl);
pl.mostrar();

// a) Cuántos libros tienen el autor (Z).

System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION A
.....................................");
System.out.print("Buscar Autor (Z) ---> ");
String z = teclado.nextLine();
solA(pl,z);

System.out.println(".......................................................
..............................");

// b) Cuáles son los libros más caros.

System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION B
.....................................");
solB(pl);

System.out.println(".......................................................
..............................");

// c) A cuánto asciende el valor de los libros.

System.out.println("\n.....................................................
................................");
System.out.println(".................................... SOLUCION C
.....................................");
pl.mostrar();
solC(pl);

System.out.println(".......................................................
..............................");
}

// SOLUCION A
private static void solA(PilaLibros PL, String Z) {
int cont=0;
PilaLibros aux = new PilaLibros();
Libro elem;
while (!PL.esVacia()) {
elem = PL.eliminar();
if(elem.getAutor().equalsIgnoreCase(Z)) {
cont++;
}
aux.adicionar(elem);
}
PL.vaciar(aux);
if(cont>0) {
System.out.println("El Autor: "+Z+", tiene "+"("+cont+")"+"
libros.");
}
else {
System.out.println("No existe en la Pila el Autor: "+Z);
}
}

// SOLUCION B
private static void solB(PilaLibros PL) {
int x=PL.nroElem();
int n=((x/2)+1);
ordenarPila(PL);

PilaLibros aux = new PilaLibros();


PilaLibros R = new PilaLibros();
aux.vaciar((copiarPila(PL)));
R.vaciar(aux);

System.out.println("---> LIBROS MAYOR PRECIO <---");


while(R.nroElem()!=n) {
Libro elem;
elem = R.eliminar();
System.out.println(elem);
aux.adicionar(elem);
}
R.vaciar(aux);
}

// SOLUCION C
private static void solC(PilaLibros PL) {
double c=0;
PilaLibros aux = new PilaLibros();
Libro elem;
while (!PL.esVacia()) {
elem = PL.eliminar();
c=c+elem.getPrecio();
aux.adicionar(elem);
}
PL.vaciar(aux);
System.out.println("TOTAL \t "+c+" bs.");
}

// CARGAR PILA
private static void cargarPila(PilaLibros PL) {
PL.adicionar(new Libro("Victor Chungara","Calculo I",35.5));
PL.adicionar(new Libro("Homero","Iliada",18));
PL.adicionar(new Libro("Victor Chungara","Calculo II",45));
PL.adicionar(new Libro("Alvarez Huayta","Fisica Mecanica",34));
PL.adicionar(new Libro("Nataniel Aguirre","Juan de la Rosa",25));
PL.adicionar(new Libro("Carlos Medinacelly","Chaskañawi",25));
PL.adicionar(new Libro("Alvarez Huayta","Teoria de Errores",30));
PL.adicionar(new Libro("Victor Chungara","Calculo III",40.5));
PL.adicionar(new Libro("Franz Tamayo","La Prometeida",80));
PL.adicionar(new Libro("Oscar Alfaro","Paisajes",25));
PL.adicionar(new Libro("Homero","La odisea",15));
}

// ORDENAR PILA
private static void ordenarPila(PilaLibros PL) {
PilaLibros aux = new PilaLibros();
PilaLibros R = new PilaLibros();
while(!PL.esVacia()) {
Libro mayor = PL.eliminar();
while (!PL.esVacia()) {
Libro elem = PL.eliminar();
if(elem.getPrecio() > mayor.getPrecio()) {
aux.adicionar(mayor);
mayor = elem;
}
else {
aux.adicionar(elem);
}
}
PL.vaciar(aux);
R.adicionar(mayor);
}
PL.vaciar(R);
}

// FUNCION COPIAR PILA


private static PilaLibros copiarPila(PilaLibros PL) {
PilaLibros aux1 = new PilaLibros();
PilaLibros aux2 = new PilaLibros();
PilaLibros copia = new PilaLibros();
Libro elem;

while(!PL.esVacia()) {
elem = PL.eliminar();
aux1.adicionar(elem);
aux2.adicionar(elem);
}
PL.vaciar(aux1);
copia.vaciar(aux2);
return copia ;
}
}

Clase Libro

public class Libro {


private String autor;
private String titulo;
private double precio;

// Constructor por defecto


public Libro() {
this.autor = "";
this.titulo = "";
this.precio = 0;
}
// Constructor por defecto
public Libro(String autor, String titulo, double precio) {
super();
this.autor = autor;
this.titulo = titulo;
this.precio = precio;
}

// Getters y Setters
public String getAutor() {
return autor;
}

public void setAutor(String autor) {


this.autor = autor;
}

public String getTitulo() {


return titulo;
}

public void setTitulo(String titulo) {


this.titulo = titulo;
}

public double getPrecio() {


return precio;
}

public void setPrecio(double precio) {


this.precio = precio;
}

// To String
@Override
public String toString() {
return "Libro [autor=" + autor + ", titulo=" + titulo + ", precio=" +
precio + " bs.]";
}

// Metodo leer Libro


public void leerL() {
Scanner teclado = new Scanner(System.in);
System.out.println("----------------> LEER-LIBRO <----------------"
);
System.out.print("Autor ---> ");
this.autor = teclado.nextLine();

System.out.print("Titulo ---> ");


this.titulo = teclado.nextLine();

System.out.print("Precio ---> ");


this.precio = teclado.nextDouble();
}

// Metodo mostrar Libro


public void mostrarL() {
//System.out.println("----------------> MOSTRAR-LIBRO <--------------
--" );
//System.out.println("*****************************************************
***************************" );
System.out.println(toString());
}
}

d) Prueba de Corrida

También podría gustarte