Ejercicios resueltos de Java: histograma de imágenes, filtro de color y gestión de citas médicas
Ejercicios de procesamiento de imágenes y gestión de citas en Java
b) Método calculoHistograma
Implementar un método calculoHistograma que, a partir de una imagen tomada como argumento, calcule el histograma de la misma.
public int[] calculoHistograma(byte[][] imagen) {
if (imagen == null || imagen.length == 0)
return null;
for (int i = 0; i < imagen.length; i++)
if (imagen[i].length != imagen[0].length)
return null;
int[] histograma = new int[256];
for (int i = 0; i < histograma.length; i++)
histograma[i] = 0;
for (int i = 0; i < imagen.length; i++)
for (int j = 0; j < imagen[i].length; j++)
histograma[imagen[i][j]]++;
return histograma;
}c) Método calculoColorMasFrecuente
Implementar un método calculoColorMasFrecuente que, a partir de un histograma tomado como argumento donde cada índice representa un color, devuelva el color más frecuente.
public int calculoColorMasFrecuente(byte[] histograma) {
if (histograma == null || histograma.length == 0)
return -1;
int maximo = histograma[0];
for (int i = 0; i < histograma.length; i++)
if (histograma[i] > maximo)
maximo = histograma[i];
return maximo;
}d) Método filtroColor
Implementar un método filtroColor que tome como argumento una imagen y un color entre 0 y 255.
public byte[][] filtroColor(byte[][] imagen, byte color) {
if (imagen == null || imagen.length == 0)
return null;
for (int i = 0; i < imagen.length; i++)
if (imagen[i].length != imagen[0].length)
return null;
byte[][] imagenFiltrada = new byte[imagen.length][imagen[0].length];
for (int i = 0; i < imagen.length; i++)
for (int j = 0; j < imagen[i].length; j++)
if (imagen[i][j] == color)
imagenFiltrada[i][j] = color;
else
imagenFiltrada[i][j] = 0;
return imagenFiltrada;
}a) Clase Cita
Implementar la clase Cita. Una cita deberá guardar el nombre del cliente y su compañía de seguros en forma de dos String.
class Cita {
private String nombre;
private String seguro;
private FechaCita fecha;
public Cita(String nombre, String seguro, FechaCita fecha) {
this.nombre = nombre;
this.seguro = seguro;
this.fecha = fecha;
}
public String getNombre() {
return nombre;
}
public String getSeguro() {
return seguro;
}
public FechaCita getFecha() {
return fecha;
}
}b) Clase gestionCitas
Implementar la clase gestionCitas. El centro médico gestiona las citas del mes de septiembre de 2016 haciendo uso de un array bidimensional.
class GestionCitas {
Cita[][] citas;
public GestionCitas() {
citas = new Cita[30][10];
for (int i = 0; i < citas.length; i++)
for (int j = 0; j < citas[i].length; j++)
citas[i][j] = null;
}
public void reservarCita(Cita citaReservar) {
int diaCita = citaReservar.getFecha().getDia();
int sesionCita = citaReservar.getFecha().getSesion();
if (citas[diaCita][sesionCita] == null) {
citas[diaCita][sesionCita] = citaReservar;
} else {
System.out.print("La cita no es posible");
}
}
public void anularCita(Cita citaAnular) {
for (int i = 0; i < citas.length; i++)
for (int j = 0; j < citas[i].length; j++)
if (citas[i][j] == citaAnular) {
citas[i][j] = null;
return;
}
}
}c) Método main de prueba
Implementar un método main de prueba que ejercite la clase anterior.
public static void main(String[] args) {
GestionCitas miGestorJunio = new GestionCitas();
FechaCita fechaCita1 = new FechaCita(2, 2);
FechaCita fechaCita2 = new FechaCita(3, 2);
Cita cita1 = new Cita("Bárbara", "ASISA", fechaCita1);
Cita cita2 = new Cita("Pepe", "ADESLAS", fechaCita2);
miGestorJunio.reservarCita(cita1);
miGestorJunio.reservarCita(cita2);
miGestorJunio.anularCita(cita1);
}