Autor Tema: Me pdrian ayudar con este problema  (Leído 2310 veces)

MichelGM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Me pdrian ayudar con este problema
« en: 09 de Marzo 2022, 05:31 »
hola que tal  soy nuevo en la programacion y nos pidieron este ejemplo pero la verdad no le entiendo

Hacer un programa que que implemente un TDA inmutable:
Hacer una clase Estudiante (Definir sus atributos)
Hacer la clase Maestro
Hacer la clase ListadelMAestro  (con arreglos, no con la clase Vector)

El programa deberá:

1.      agregar un estudiante al final de la lista

2.      Reemplazar a un estudiante de la posición x

3.      regresa el primer estudiante de la lista

4.      regresa al último estudiante de la lista

5.      Regresa una sublista de hombres

6.      Regresa una sublista de mujeres

7.      Regresa los aprobados

8.      Regresa los reporbados

9.      Regresa los estudiantes que su primer apellido inicie con una letra X

10.  Regresa estudiantes que su nombre empiece con una letra X

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Me pdrian ayudar con este problema
« Respuesta #1 en: 09 de Marzo 2022, 12:14 »
Hola, primero necesitamos una clase Estudiante con algunos atributos, al menos los necesarios para cumplir con las gestiones que se solicitan:
Código: [Seleccionar]
public class Estudiante {

private String nombre;
private String apellidos;
private char sexo; //H hombre, M mujer
private int calificacion;

public Estudiante(String nombre, String apellidos, char sexo, int calificacion) {
this.nombre = nombre;
this.apellidos = apellidos;
this.sexo = sexo;
this.calificacion = calificacion;
}

public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public char getSexo() {
return sexo;
}
public void setSexo(char sexo) {
this.sexo = sexo;
}
public int getCalificacion() {
return calificacion;
}
public void setCalificacion(int calificacion) {
this.calificacion = calificacion;
}

@Override
public String toString() {
return String.format("Nombre: %s %s , Calificacion: %d", nombre, apellidos, calificacion);
}

}

Una clase Maestro, la cuál entre sus atributos va a tener un objeto que será una lista inmutable, cuya clase escribiremos después.
Esa lista ha de tener un tamaño determinado, así que lo indicaremos en el constructor:
Código: [Seleccionar]
public class Maestro {

private String nombre;
private String apellidos;
private ListaDelMaestro listaEstudiantes;

public Maestro(String nombre, String apellidos, int nEstudiantes) {
this.nombre = nombre;
this.apellidos = apellidos;
listaEstudiantes = new ListaDelMaestro(nEstudiantes);
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public ListaDelMaestro getListaAlumnos() {
return listaEstudiantes;
}

public void setListaAlumnos(ListaDelMaestro listaEstudiantes) {
this.listaEstudiantes = listaEstudiantes;
}

}

Y ahora la clase ListaDelMaestro.
Esta clase será un arreglo de objetos Estudiante con el tamaño indicado.
Tendrá una serie de métodos para poder hacer todo lo que se pide: agregarEstudiante, hacer una lista de aprobados, etc..

Para poder saber hasta cuál posición del arreglo hay estudiantes registrados o no, usaremos un "indice", una variable int que comienza a 0 y va incrementando su valor cada vez que se agrega un estudiante.
Código: [Seleccionar]
public class ListaDelMaestro {

private Estudiante[] lista;
private int indice; //Este indice nos dice hasta que posicion hay estudiantes en el arreglo

public ListaDelMaestro(int nEstudiantes) {
lista = new Estudiante[nEstudiantes];
indice = 0;
}

public void agregarEstudianteFinal(Estudiante estu) {
if (indice == lista.length)
System.out.println("No se pudo agregar, la lista esta completa.");
else {
lista[indice] = estu;
indice++;
System.out.println("Estudiante agregado");
}
}

public void reemplazarEstudiante(Estudiante estu, int posicion) {
if (posicion >= lista.length)
System.out.println("Posicion fuera de rango");
else if (posicion < indice) {
lista[indice] = estu;
System.out.println("Estudiante reemplazado");
}
else
System.out.println("No hay Estudiante para reemplazar en la posicion indicada");
}

public Estudiante getPrimeroLista() {
if (indice == 0) {
System.out.println("La lista esta vacía");
return null;
}
else
return lista[0];
}

public Estudiante getUltimoLista() {
if (indice == 0) {
System.out.println("La lista esta vacía");
return null;
}
else
return lista[indice-1];
}

public Estudiante[] getListaHombres() {

}

public Estudiante[] getListaMujeres() {

}

public Estudiante[] getListaAprobados() {

}

public Estudiante[] getListaReprobados() {

}

public Estudiante[] getListaApellidosEmpiezan(char letra) {

}

public Estudiante[] getListaNombresEmpiezan(char letra) {

}
}

No he escrito el código de todos los métodos, tendrás que intentar escribirlos tú para completar esta clase.
Inténtalo y si no lo consigues, comparte por aquí lo que hayas conseguido y te ayudamos a completar.

Por último, hace falta una clase principal, donde crearemos un Maestro y ofreceremos un menú de opciones para que el usuario pueda gestionar la lista.
En el menú, pedimos una opcion, la evaluamos con switch, y llamaremos a distintos métodos para hacer lo que se pide.

Te pongo un ejemplo también sin terminar, de nuevo, intenta completarlo y pídenos ayuda cuando no puedas avanzar.
Un saludo.

Código: [Seleccionar]
import java.util.Scanner;

public class Main {

private static Maestro maestro;
private static Scanner teclado = new Scanner(System.in);

public static void main(String[] args) {
//Construimos un Maestro, indicando nombre y cuantos Estudiantes tendrá su lista
maestro = new Maestro("Francisco", "Sanchez", 24);

int opcion = 0;
//Menu opciones
do {
System.out.println("\n\t\tMENU DEL MAESTRO");
System.out.println("\t\t---- --- -------\n");
System.out.println("[1] - Agregar Estudiante a la Lista");
System.out.println("[2] - Reemplazar Estudiante en una posicion");
System.out.println("[3] - Regresar primero de la Lista");
System.out.println("[4] - Regresar ultimo de la Lista");
System.out.println("[5] - Obtener Lista de Hombres");
System.out.println("[6] - Obtener Lista de Mujeres");
System.out.println("[7] - Obtener Lista de Aprobados");
System.out.println("[8] - Obtener Lista de Reprobados");
System.out.println("[9] - Obtener Lista de Apellidos que empiezan por una letra");
System.out.println("[10] - Obtener Lista de Nombres que empiezan por una letra");
System.out.println("\t\t---------");
System.out.println("[0] - TERMINAR PROGRAMA");
System.out.print("\nOpcion:");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 0:
System.out.println("\n\tFIN DE PROGRAMA");
break;
case 1:
agregarEstudiante();
break;
case 2:
reemplazarEstudiante();
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
break;
case 10:
break;
}

}while(opcion != 0);
}

private static void agregarEstudiante() {
//Pedimos datos para construir un estudiante
System.out.println("\nNUEVO ESTUDIANTE\n");
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Apellidos: ");
String apellidos = teclado.nextLine();
System.out.print("Sexo(H/M): ");
char sexo = teclado.nextLine().toUpperCase().charAt(0);
System.out.print("Calificacion(0/10): ");
int califi = Integer.parseInt(teclado.nextLine());

//Agregamos a la lista
maestro.getListaAlumnos().agregarEstudianteFinal(new Estudiante(nombre, apellidos, sexo, califi));

}

private static void reemplazarEstudiante() {
System.out.println("\nREEMPLAZAR ESTUDIANTE\n");
System.out.println("Datos del nuevo estudiante:");
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Apellidos: ");
String apellidos = teclado.nextLine();
System.out.print("Sexo(H/M): ");
char sexo = teclado.nextLine().toUpperCase().charAt(0);
System.out.print("Calificacion(0/10): ");
int califi = Integer.parseInt(teclado.nextLine());

System.out.print("\nPosicion de la lista donde emplazarlo: ");
int posicion = Integer.parseInt(teclado.nextLine());

maestro.getListaAlumnos().reemplazarEstudiante(new Estudiante(nombre, apellidos, sexo, califi), posicion);
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".