Semana 3 / Unidad II
ALGORITMOS Y ESTRUCTURAS DE DATOS
RESOLUCIÓN DE EJERCICIOS
A continuación encontrará el desarrollo de los ejercicios que resolvió en la semana. Contraste
las respuestas entregadas por el docente con las desarrolladas por usted. En caso que no
coincidan, y persistan dudas, le invitamos a repasar los contenidos y/ o consultar con su
profesor.
Alineación Curricular del Material de Estudio
El contenido que se expone a continuación está ligado a la siguiente unidad de
competencia:
- Construir clases agrupadas dinámicas en el lenguaje Java que presentan un
comportamiento complejo de flujo de control
RESPUESTAS ESPERADAS
ITEM 1
(Nota: este documento sirve para comparar respuestas con el archivo GE_3, se puede utilizar
también para el SAP_3, pero se debe tomar en cuenta que al reproducir el scorm, las
alternativas cambian de lugar).
Resolución
1. D Esta mal utilizado el método add en el ArrayList
2. E No hay errores
3. C Permite castear cada elemento del ArrayList a texto
4. B Permite obtener el valor del elemento i del ArrayList
Semana 3 / Unidad II
ITEM 2
a. Crear un programa que use un ArrayList de números reales. El programa debe permitir
mostrar un menú donde se pueda agregar un número, otro para buscar un número, otro
para modificar un número, también se pueda eliminar un número, y también se pueda
insertar un número en una posición dada.
import [Link];
import [Link];
import [Link];
import [Link];
public class ProyectoListaNumeros {
ArrayList<Double> listaNumeros;
public static void main(String[] args) {
ProyectoListaNumeros ejercicioNumeros = new ProyectoListaNumeros();
[Link] = new ArrayList();
[Link]();
}
public void leerOpcion() {
Scanner entrada = new Scanner([Link]);
int opcion;
do {
[Link]("\nLista de números ");
[Link]("1. Agregar ");
[Link]("2. Buscar ");
[Link]("3. Modificar elemento ");
[Link]("4. Eliminar elemento ");
[Link]("5. Insertar elemento ");
[Link]("6. Mostrar elemento ");
[Link]("7. Mostrar en orden ascendente ");
[Link]("8. Mostrar en orden descendente ");
[Link]("9. Salir\n ");
[Link]("Ingrese número de opción ");
opcion = [Link]();
switch (opcion) {
case 1:
ingresarValor();
break;
case 2:
buscarValor();
break;
case 3:
modificarValor();
break;
case 4:
eliminarValor();
Semana 3 / Unidad II
break;
case 5:
insertarValor();
break;
case 6:
mostrarLista();
break;
case 7:
ordenarAscendente();
break;
case 8:
ordenarDescendente();
break;
}
} while (opcion != 9);
}
public void ingresarValor() {
Scanner entrada = new Scanner([Link]);
double valor;
[Link]("Ingrese valor: ");
valor = [Link]();
[Link](valor);
}
public void buscarValor() {
Scanner entrada = new Scanner([Link]);
double valor;
int indice;
[Link]("Valor a buscar: ");
valor = [Link]();
indice = [Link](valor);
if (indice != -1) {
[Link]("El valor se encuentra en la posición: " +
indice);
} else {
[Link]("Dato no encontrado");
}
}
public void modificarValor() {
Scanner entrada = new Scanner([Link]);
double valor, nuevoValor;
int indice;
[Link]("Valor a modificar: ");
valor = [Link]();
indice = [Link](valor);
if (indice != -1) {
[Link]("Nuevo valor: ");
Semana 3 / Unidad II
nuevoValor = [Link]();
[Link](indice, nuevoValor);
} else {
[Link]("Dato no encontrado");
}
}
public void eliminarValor() {
Scanner entrada = new Scanner([Link]);
double valor;
int indice;
[Link]("Valor a eliminar: ");
valor = [Link]();
indice = [Link](valor);
if (indice != -1) {
[Link](indice);
[Link]("El valor fue eliminado");
} else {
[Link]("Dato no fue encontrado");
}
}
public void insertarValor() {
Scanner entrada = new Scanner([Link]);
double valor;
int indice;
[Link]("Valor a insertar: ");
valor = [Link]();
[Link]("Posición donde se desea insertar el valor: ");
indice = [Link]();
[Link](indice, valor);
}
public void mostrarLista() {
if (![Link]()) {
[Link]("Elementos de la lista: ");
for (int i = 0; i < [Link](); i++) {
[Link]([Link](i));
}
} else {
[Link]("No existen valores en la lista ");
}
}
public void ordenarAscendente() {
[Link](listaNumeros);
mostrarLista();
}
public void ordenarDescendente() {
Comparator<Double> comparador = [Link]();
[Link](listaNumeros, comparador);
mostrarLista();
Semana 3 / Unidad II
}
}
b. Ingresar los nombres y las notas de n alumnos, y mostrar este listado en orden alfabético
y en orden de mérito (promedio más alto al más bajo).
// CLASE ALUMNO
public class Alumno {
private String nombre;
private double nota;
public Alumno (String nombre, double nota) {
[Link] = nombre;
[Link] = nota;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
[Link] = nombre;
}
public double getNota() {
return nota;
}
public void setNota(double nota) {
[Link] = nota;
}
}
// CLASE PRINCIPAL
import [Link];
import [Link];
import [Link];
public class ProyectoListaAlumnos {
private ArrayList<Alumno> listaAlumnos;
public static void main(String[] args) {
ProyectoListaAlumnos proyectoAlumnos = new ProyectoListaAlumnos();
[Link]();
[Link]();
[Link]();
}
public void ingresarDatos() {
Scanner entrada = new Scanner([Link]);
//Scanner entrada2 = new Scanner([Link]);
String nombre, respuesta;
Semana 3 / Unidad II
double nota;
listaAlumnos = new ArrayList();
int i = 0;
do {
[Link]("\nAlumno " + (++i));
[Link]("Ingrese nombre del alumno: ");
nombre = [Link]();
[Link]("Ingrese promedio final del alumno: ");
entrada = new Scanner([Link]);
nota = [Link]([Link]());
Alumno alumno = new Alumno(nombre, nota);
[Link](alumno);
[Link]("Desea ingresar nuevo alumno (S/N): ");
respuesta = [Link]();
} while ([Link]("S"));
}
public void imprimirDatos() {
for (int i = 0; i < [Link](); i++) {
[Link]([Link](i).getNombre() + ", " +
[Link](i).getNota());
}
}
private void ordenarPorNombre() {
[Link]("\nDatos en orden alfabético: ");
//[Link](listaAlumnos, (Alumno alumno1, Alumno alumno2) ->
[Link]().compareTo([Link]()));
[Link](listaAlumnos, (Alumno alumno1, Alumno alumno2) ->
[Link]().compareTo([Link]()));
imprimirDatos();
}
private void ordenarPorNota() {
[Link]("\nDatos en orden de mérito: ");
[Link](listaAlumnos, (Alumno alumno1, Alumno alumno2) ->
[Link]([Link](), [Link]())); //
.compareTo([Link]()));
imprimirDatos();
}
}