Ejercicios resueltos de Java: histograma de imágenes, filtro de color y gestión de citas médicas

Informática y Telecomunicaciones4,46 KB

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);
}

Descargar

PDF Word HTML