Java - necesito ayuda con un ejercicio porfavor

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

necesito ayuda con un ejercicio porfavor

Publicado por Eduardo (8 intervenciones) el 12/07/2019 15:08:56
Una empresa dedicada a la venta de cafés requiere que usted programe un software que gestione las preparaciones de café de cada máquina. Se sabe que actualmente la empresa dispone de 5 máquinas, donde cada una tiene un registro de el nro de serie, el stock de agua, el stock de café y el stock de azúcar. Para la preparación de un café se necesitan 150 ml de agua, 5 gr de café y 10 gr de azúcar por lo que usted tendrá que calcular los números de cafés disponibles para una máquina especifica y preparar el café si el usuario así lo quiere.

La función calculaDisponibilidad() retorna el número de cafés que la máquina puede preparar dada la disponibilidad de ingredientes. Esta función recibe como parámetros la matriz de máquinas de café y el n° de serie de la máquina que se calcularán los cafés disponibles. Recuerde que para la preparación de un café se necesitan 150 ml de agua, 5 gr de café y 10 gr de azúcar.
La función preparaCafe() recibe como parámetro la matriz de maquinas de café y el n° de serie de la máquina que preparará el café, si hay disponibilidad de cafés en esa máquina busca la máquina en la matriz, prepara el café (baja el stock) y muestra el mensaje “Café Preparado”, sino se puede preparar el café porque no hay disponibilidad muestra el mensaje "No hay disponibilidad en la máquina seleccionada“. Finalmente se retorna la matriz.
En la función main() usted debe solicitar los datos usuario de las máquinas de café (llenar la matriz) y posteriormente inicia la preparación de cafés (Termina al ingresar un 0). Utilice los siguientes mensajes:

"Ingrese nro de serie“

“Ingrese ml. de agua”

"Ingrese gr. de café“

"Ingrese gr. de azúcar“

//Ciclo…..

“Ingrese 1 para preparar café o 0 para salir” //Si es 1 prepara el café

Ingrese máquina (nro serie)


La salida esperada es la siguiente:
Output=
Ingrese nro de serie
Ingrese ml. de agua
Ingrese gr. de café
Ingrese gr. de azúcar
Ingrese nro de serie
Ingrese ml. de agua
Ingrese gr. de café
Ingrese gr. de azúcar
Ingrese nro de serie
Ingrese ml. de agua
Ingrese gr. de café
Ingrese gr. de azúcar
Ingrese nro de serie
Ingrese ml. de agua
Ingrese gr. de café
Ingrese gr. de azúcar
Ingrese nro de serie
Ingrese ml. de agua
Ingrese gr. de café
Ingrese gr. de azúcar
Ingrese 1 para preparar café o 0 para salir
Ingrese máquina (nro serie)
Café Preparado
Ingrese 1 para preparar café o 0 para salir
Ingrese máquina (nro serie)
Café Preparado
Ingrese 1 para preparar café o 0 para salir
Ingrese máquina (nro serie)
Café Preparado
Ingrese 1 para preparar café o 0 para salir
Ingrese máquina (nro serie)
No hay disponibilidad en la máquina seleccionada
Ingrese 1 para preparar café o 0 para salir
Ingrese máquina (nro serie)
No hay disponibilidad en la máquina seleccionada
Ingrese 1 para preparar café o 0 para salir
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

necesito ayuda con un ejercicio porfavor

Publicado por Kabuto (1381 intervenciones) el 12/07/2019 19:58:57
El enunciado dice que hay que usar una matriz para representar las máquinas de café.
Si tenemos 5 máquinas, y cada máquina tiene 4 datos (nº serie, stock agua, stock café, stock azúcar)

Pues es evidente que necesitamos una matriz de 5x4 y que el tipo de dato a almacenar nos valdrá con un int:

1
int[][] maquinasCafe = new int[5][4];

Bien, partiendo de aquí, no intentes resolver el ejercicio completo en un solo "ataque". Ves conquistándolo poco a poco, en pequeños objetivos.

Intenta escribir un código donde declaras esa matriz y mediante bucle pide al usuario los datos para iniciar los valores.
Es decir:

Máquina #1
- Pedir nº serie
- Pedir stock agua
- Pedir stock café
- Pedir stock azúcar


Máquina #2
- Pedir nº serie
- Pedir stock agua
- Pedir stock café
- Pedir stock azúcar


Máquina #3
....
etc, etc...


Haz solo eso.

Si no lo consigues, muestra aquí tu código y te ayudamos a corregirlo y completarlo.

Si lo consigues, intenta entonces escribir la función calculaDisponibilidad() y si te atascas, lo mismo, publica aquí código y te ayudamos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

[Solución] necesito ayuda con un ejercicio porfavor

Publicado por Billy Joel (875 intervenciones) el 13/07/2019 20:08:30
El problema lo resuelvo con una clase Maquina que tenga como propiedades los datos de las maquinas serie, cantidad de cafe, agua y azucar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
public class Maquina {
 
    private String serie;
    private Double stockAgua;
    private Double stockCafe;
    private Double stockAzucar;
 
    public static final Double PREPARACION_AGUA = 150.00;
    public static final Double PREPARACION_CAFE = 5.00;
    public static final Double PREPARACION_AZUCAR = 10.00;
 
    /**
     * Metodo utilizado para preparar un café. Al invocar este método se
     * rebajarán del stock la cantidad necesarias de ingredientes
     *
     * @return
     */
    public boolean prepararCafe() {
        if (calcularDisponibilidad() > 0) {
            stockAgua -= PREPARACION_AGUA;
            stockCafe -= PREPARACION_CAFE;
            stockAzucar -= PREPARACION_AZUCAR;
            return true;
        } else {
            return false;
        }
    }
 
    /**
     * Devuelve la disponibilidad para preparar cafes
     *
     * @return
     */
    public Integer calcularDisponibilidad() {
        Double disponibleAgua = stockAgua / PREPARACION_AGUA;
        Double disponibleCafe = stockCafe / PREPARACION_CAFE;
        Double disponibleAzucar = stockAzucar / PREPARACION_AZUCAR;
        return getMin(disponibleAgua, disponibleCafe, disponibleAzucar);
    }
 
    private Integer getMin(Double d1, Double d2, Double d3) {
        Double da = d1 < d2 ? d1 : d2;
        return da < d3 ? da.intValue() : d3.intValue();
    }
 
    @Override
    public String toString() {
        return "Maquina: " + serie + "\nAgua: " + stockAgua + "\nCafe: " + stockCafe + "\nAzucar: " + stockAzucar;
    }
 
    /**
     * @return the serie
     */
    public String getSerie() {
        return serie;
    }
 
    /**
     * @param serie the serie to set
     */
    public void setSerie(String serie) {
        this.serie = serie;
    }
 
    /**
     * @return the stockCafe
     */
    public Double getStockCafe() {
        return stockCafe;
    }
 
    /**
     * @param stockCafe the stockCafe to set
     */
    public void setStockCafe(Double stockCafe) {
        this.stockCafe = stockCafe;
    }
 
    /**
     * @return the stockAzucar
     */
    public Double getStockAzucar() {
        return stockAzucar;
    }
 
    /**
     * @param stockAzucar the stockAzucar to set
     */
    public void setStockAzucar(Double stockAzucar) {
        this.stockAzucar = stockAzucar;
    }
 
    /**
     * @return the stockAgua
     */
    public Double getStockAgua() {
        return stockAgua;
    }
 
    /**
     * @param stockAgua the stockAgua to set
     */
    public void setStockAgua(Double stockAgua) {
        this.stockAgua = stockAgua;
    }
}

Entonces acá te dejo la clase principal con sus menues:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static final int CANTIDAD_MAQUINAS = 5;
    public static final int OPCION_SALIR = 0;
    public static final int OPCION_PREPARAR_CAFE = 1;
    public static final int OPCION_ACTUALIZAR_MAQUINA = 2;
 
    /**
     * Metodo utilizado para leer Strings
     *
     * @param mensaje
     * @return
     */
    private static String leer(String mensaje) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        try {
            System.out.print(mensaje);
            s = br.readLine();
        } catch (IOException ex) {
            System.out.println("Hubo un problema de lectura, vuelva a intentarlo");
            s = null;
        }
        if (s == null) {
            s = leer(mensaje);
        }
        return s;
    }
 
    /**
     * Metodo utilizado para leer Doubles
     *
     * @param mensaje
     * @return
     */
    private static Double leerDouble(String mensaje) {
        Double d;
        try {
            d = Double.parseDouble(leer(mensaje));
        } catch (NumberFormatException ex) {
            System.out.println("Formato incorrecto, vuelva a intentarlo");
            d = null;
        }
        if (d == null) {
            d = leerDouble(mensaje);
        }
        return d;
    }
 
    private static Integer leerInteger(String mensaje) {
        Integer d;
        try {
            d = Integer.parseInt(leer(mensaje));
        } catch (NumberFormatException ex) {
            System.out.println("Formato incorrecto, vuelva a intentarlo");
            d = null;
        }
        if (d == null) {
            d = leerInteger(mensaje);
        }
        return d;
    }
 
    private static void showMaquinas(Maquina[] maquinas) {
        for (Maquina m : maquinas) {
            System.out.println(m.toString() + "\n------------------------------");
        }
    }
 
    public static void main(String[] args) {
        //Primero inicializamos la matriz de máquinas
        Maquina[] maquinas = new Maquina[CANTIDAD_MAQUINAS];
 
        //Ahora cargamos los datos de las máquinas
        for (Maquina maquina : maquinas) {
            cargarDatos(maquina);
        }
 
        int opcion;
        do {
            opcion = leerInteger("Introduzca " + OPCION_PREPARAR_CAFE + " para preparar un café"
                    + "\nIntroduzca " + OPCION_ACTUALIZAR_MAQUINA + " para actualizar el stock de una máquina"
                    + "\nIntroduzca " + OPCION_SALIR + " para salir: ");
            switch (opcion) {
                case OPCION_PREPARAR_CAFE:
                    prepararCafe(maquinas);
                    break;
                case OPCION_ACTUALIZAR_MAQUINA:
                    actualizarMaquina(maquinas);
                    break;
                case OPCION_SALIR:
                    salir();
                    break;
                default:
                    System.out.println("Opción incorrecta, vuelva a intentar");
                    break;
            }
 
        } while (opcion != OPCION_SALIR);
        System.out.println("Adios!!");
 
    }
 
    /**
     * Carga los datos de una máquina
     *
     * @param m
     */
    public static void cargarDatos(Maquina m) {
        m = new Maquina();
        if (m.getSerie() == null || m.getSerie().isEmpty()) {
            m.setSerie(leer("Introduzca el número de serie: "));
        }
        m.setStockAgua(leerDouble("Introduzca la cantidad de agua: "));
        m.setStockAzucar(leerDouble("Introduzca la cantidad de azucar en gramos: "));
        m.setStockCafe(leerDouble("Introduzca la cantidad de café en gramos: "));
    }
 
    /**
     * Metodo utilizado para preparar cafe
     *
     * @param maquinas
     */
    public static void prepararCafe(Maquina[] maquinas) {
        System.out.println("Opcion preparar cafe...."
                + "\nA continuación las máquinas de cafe");
        showMaquinas(maquinas);
        String serie = leer("Introduzca el número de serie de la máquina para preparar el cafe: ");
        Maquina m = null;
        for (Maquina a : maquinas) {
            if (a.getSerie().equals(serie)) {
                m = a;
                break;
            }
        }
        if (m == null) {
            System.out.println("Maquina no encontrada");
        } else {
            int cantidad = leerInteger("Introduzca la cantidad de cafés a preparar: ");
            if (m.calcularDisponibilidad() >= cantidad) {
                for (int i = 0; i < cantidad; i++) {
                    m.prepararCafe();
                }
                System.out.println("Pedido servido!!");
            } else {
                System.out.println("La maquina no tiene la disponibilidad suficiente para cubrir ese pedido.");
            }
        }
    }
 
    /**
     * Metodo utilizado para preparar cafe
     *
     * @param maquinas
     */
    public static void actualizarMaquina(Maquina[] maquinas) {
        System.out.println("Opcion actualizar maquinia...."
                + "\nA continuación las máquinas de cafe");
        showMaquinas(maquinas);
        String serie = leer("Introduzca el número de serie de la máquina para actualizar los datos: ");
        Maquina m = null;
        for (Maquina a : maquinas) {
            if (a.getSerie().equals(serie)) {
                m = a;
                break;
            }
        }
        if (m == null) {
            System.out.println("Maquina no encontrada");
        } else {
            cargarDatos(m);
        }
    }
 
    /**
     * Metodo utilizado para salir
     */
    public static void salir() {
        System.out.println("Opcion salir...");
    }
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar