Está en la página 1de 8

TALLER PILAS

INTEGRANTES:

● Tania Fernanda Figueredo Leal


● Jimena Fernanda Fagua

EJERCICIOS
1. Ingrese la cantidad de notas que el usuario desee(el mismo determina hasta
cuando termina de ingresar notas), posterior a ello imprimir las notas, la
media y la moda usando pilas.

SOLUCIÓN EJERCICIOS

1. NOTAS

ANÁLISIS
Usando pilas, ingresa el usuario notas por teclado, permitiendo agregar la cantidad
de notas de acuerdo a la decisión del usuario, dándole la opción al usuario que
ingrese las que quiera y termine cuando desee y por último halla la media y moda
de la lista de notas del estudiante.

ALGORITMO

Inicio algoritmo
//Declarar variables del nodo
private double notas;
private Nodo siguiente;
//Constructor que inicializa el valor de las variables
public Nodo(){
this.notas = 0;
this.siguiente = null;
}
//Declara variables pila
private Nodo inicio;
private int cantidad;

public Pila(){
inicio = null;
cantidad = 0;
}

//Agrega un nuevo nodo a la pila


public void apilar(double notas){
Nodo nuevo = new Nodo();
nuevo.setNotas(notas);
if (esVacia()) {
inicio = nuevo;
}
else{
nuevo.setSiguiente(inicio);
inicio = nuevo;
}
cantidad++;
}

// Elimina el elemento que se encuentra en el tope de la pila


public void retirar(){
if (!esVacia()) {
inicio = inicio.getSiguiente();
cantidad--;
}
}

// Consulta el valor del nodo que se encuentra en la cima de la pila

public double cima() throws Exception{


if(!esVacia()){
return inicio.getNotas();
} else {
throw new Exception("La pila se encuentra vacia.");
}
}

// Buscar un elemento en la pila

public boolean buscar(double referencia){


Nodo aux = inicio;
boolean existe = false;
while(existe != true && aux != null){
if (referencia == aux.getNotas()) {
existe = true;
}
else{
aux = aux.getSiguiente();
}
}
if(existe==true) {
System.out.println ("Nota encontrada en la lista
\n"+aux.getNotas());
}

else{
System.out.println ("Nota no encontrada en la lista
\n"+referencia);
}
return existe;
}

// Elimina un nodo de la pila ubicado por su valor

public void remover(double referencia){


if (buscar(referencia)) {
Nodo pilaAux = null;
while(referencia != inicio.getNotas()){
Nodo temp = new Nodo();
temp.setNotas(inicio.getNotas());
if(pilaAux == null){
pilaAux = temp;
}
else{
temp.setSiguiente(pilaAux);
pilaAux = temp;
}
retirar();
}
retirar();
while(pilaAux != null){
apilar(pilaAux.getNotas());
pilaAux = pilaAux.getSiguiente();
}
pilaAux = null;
}
}

// Actualiza el valor de un nodo en la pila

public void editar(double referencia, double notas){


if (buscar(referencia)) {
Nodo pilaAux = null;
while(referencia != inicio.getNotas()){
Nodo temp = new Nodo();
temp.setNotas(inicio.getNotas());
if(pilaAux == null){
pilaAux = temp;
}
else{
temp.setSiguiente(pilaAux);
pilaAux = temp;
}
retirar();
}
inicio.setNotas(notas);
while(pilaAux != null){
apilar(pilaAux.getNotas());
pilaAux = pilaAux.getSiguiente();
}
pilaAux = null;
}
}

// Elimina la pila
public void eliminar(){
inicio = null;
cantidad = 0;
}
//metodos propios media y moda de notas
public double media() {
double cont=0,suma =0;
Nodo aux = inicio;
while(aux != null){
suma= suma + aux.getNotas();
cont++;
aux = aux.getSiguiente();
}
return suma/cont;
}

public double moda() {


double cont=0, cmay=0, moda=0;
Nodo aux = inicio;
Nodo copia = inicio;
while(aux != null){
cont=0;
copia = inicio;
while(copia != null) {
if(aux.getNotas()==copia.getNotas()) {
cont++;
}
copia= copia.getSiguiente();
if(cont>cmay) {
cmay=cont;
moda=aux.getNotas();
}
}

aux = aux.getSiguiente();
}
return moda;

}
//impresion
System.out.println("Por favor, Ingresar la nota \n");
double nota = teclado.nextDouble();
pila1.apilar(nota);
System.out.println("Mostrar la lista de notas: \n");
listar();
System.out.println("Tamaño: " + pila1.getCantidad());
System.out.println("Actualizar la nota del estudiante");
double referencia = teclado.nextDouble();
System.out.println("Ingrese la nueva nota del estudiante del estudiante");
double nota1 = teclado.nextDouble();
pila1.editar(referencia, nota1);
System.out.println(" Eliminar la nota del estudiante");
double nota2 = teclado.nextDouble();
pila1.remover(nota2);
System.out.println("Por favor, ingrese la nota que deseea buscar del estudiante");
double nota3 = teclado.nextDouble();
pila1.buscar(nota3);
System.out.println("Eliminar la lista de notas del estudiante ");
pila1.eliminar();
System.out.println("La media de las notas del estudiante es: " + pila1.media());
System.out.println("La moda de las notas del estudiante es: " + pila1.moda());

Fin del algoritmo


PRUEBA DE ESCRITORIO

imprimir NOTA SUMATORIA TAMAÑO PROMEDIO

Lista de Notas de un
estudiante:

Elija una opción

1. Ingresar la nota

2. Mostrar pila

3. Actualizar la nota

4. Eliminar la nota

5. Buscar la nota

6. Elimina la lista

7. Media de las notas

8. Moda de las notas

9. Salir

1. Ingresar la nota 4,0 4,0 1

1. Ingresar la nota 4,0 8,0 2

1. Ingresar la nota 2,6 10,6 3

2. Mostrar la lista

4,0

4,0

2,6

3. Actualizar la nota 2,6 ->3,0 3

7. Media de las notas 11/3 = 3,666


La media de las notas del
estudiante es: 3.666

8. Moda de las notas 4,0

4,0

n=2

3,0

n=1

La moda de las notas del


estudiante es: 4.0

EVIDENCIA

También podría gustarte