Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: patricio1 en 03 de Julio 2021, 04:44

Título: Java calcular indice de masa corporal IMC para paciente con RUT nombre edad sexo
Publicado por: patricio1 en 03 de Julio 2021, 04:44
Hola estimados, ojalá me puedan ayudar con lo siguiente:

tengo que crear un método indiceMasaCorporal el cual retorna el IMC de un paciente para un mes X.

Pero para cada paciente se le registra rut, nombre, edad, sexo y peso mensual (array con los pesos mensuales de año) y el array que almacena el peso mensual se genera de forma aleatoria con números enteros rango entre 70 y 250

Yo creé el array del peso mensual el cual me retorna los meses del 1 al 12 y números aleatorios entre el rango.

Código: [Seleccionar]
private int[] pesoMensual;
public Paciente(){
this.pesoMensual = new int[12];
for(int i=0; i < pesoMensual.length; i++){
this.pesoMensual[i] = (int) (Match.ramdom() * (250-70+1)+70) }
}

¿Cómo lo podría realizar para que al momento de que se ingrese algún mes y la altura por pantalla se realice el cálculo del IMC tomando en cuenta lo anterior?

Ojalá me puedan ayudar con esto. Saludos.
Título: Re: ayuda por favor con un ejercicio para java
Publicado por: flyboy en 03 de Julio 2021, 07:54
obviamente que tu solución está mal planificada. Para poder resolver el ejercicio necesitas almacenar en el arreglo de peso mensual el mes y el peso, incluso el mes tiene que ser año y mes. No sé qué versión de JDK uses, pero si es la 16 yo usaría un record:
record Peso(int year, int month, int weight){}

Y luego mi paciente tendría el campo:
private Peso[] pesoMensual;

Después, es cuestión de generar un rango de años y meses, y llenarlos con los valores correspondientes, entonces cuando ingresas el año y mes, ya lo buscas por año y mes.

Otra forma de resolverlo sería usando un Map<LocalDate, Integer> en lugar de un arreglo, de modo que tus valores de fecha te servirían de clave para obtener el peso.

Y la otra forma, más complicada pero que te permite hacerlo exclusivamente con arreglos sería usando dos arreglos, uno para las fechas (usa como referencia el primer día del mes, ejemplo: enero del 2021 sería 1/1/21, y diciembre del 2021 sería 1/12/21) y otro arreglo para los pesos:

private LocalDate[] fechas;
private int[] pesos;

Luego, en el mismo orden que tienes tus meses, tienes tus pesos, lo siguiente es que si ingresas un mes, por ejemplo que un usuario ingrese Enero del 2000, vas a buscar en fechas, así por ejemplo tu método buscar peso sería algo así:

Código: [Seleccionar]
for(int i=0; i<fechas.length; i++){
   if(fechas[i].compareTo(primerDiaDelMesIngresado)==0){
       return pesos[i];
   }
}

Y luego, simplemente tu IMC sería: buscarPeso(primerDiaDelMes) / (estatura * estatura)
Más complicado, pero solamente usas arreglos.
Otra forma también sería con arreglos bi-dimensionales, pero ya tendrías que resolver la diferencia de los tipos de datos, ya que en bidimensional, solamente puedes tener enteros o solamente fechas.
Título: Re: ayuda por favor con un ejercicio para java
Publicado por: Kabuto en 03 de Julio 2021, 12:14
Hace un par de meses tratamos este mismo ejercicio en otro tema (https://aprenderaprogramar.com/foros/index.php?topic=8014.msg29160#msg29160).

Puede que la solución ahí propuesta te sirva.
Título: Re: ayuda por favor con un ejercicio para java
Publicado por: patricio1 en 06 de Julio 2021, 01:58
gracias por la ayuda me sirvieron mucho las respuestas.
saludos.