Calculadora de IMC en Java: Gestión de Datos de Pacientes
Clasificado en Informática
Escrito el en español con un tamaño de 7,04 KB
Introducción
En este documento, se presenta un programa en Java que permite gestionar los datos de pacientes en un hospital, incluyendo el cálculo del Índice de Masa Corporal (IMC). El programa permite registrar pacientes, calcular su IMC, identificar al paciente con mayor IMC, verificar qué pacientes superan una altura determinada y comprobar si el paciente con menor IMC es también el más pequeño en estatura.
Funcionalidades del Programa
- Registrar múltiples pacientes con su nombre, peso (en kilos) y altura (en centímetros).
- Calcular el IMC de cada paciente.
- Mostrar un listado completo de los pacientes con sus respectivos datos e IMC.
- Identificar y mostrar el nombre del paciente con el mayor IMC.
- Permitir al usuario ingresar una altura y mostrar los nombres de los pacientes que superan esa altura.
- Verificar si el paciente con el menor IMC es también el de menor estatura.
Código Fuente en Java
Clase Principal: HospitalIMC
import java.util.Scanner;
public class HospitalIMC {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Paso 1: Preguntar cuántas personas se registrarán
System.out.print("¿Cuántas personas desea registrar? ");
int cantidadPacientes = scanner.nextInt();
scanner.nextLine(); // Limpiar el buffer
// Crear los arrays
String[] nombres = new String[cantidadPacientes];
double[] pesos = new double[cantidadPacientes];
double[] alturas = new double[cantidadPacientes];
// Rellenar los datos de los pacientes
for (int i = 0; i < cantidadPacientes; i++) {
System.out.println("Paciente " + (i + 1) + ":");
System.out.print("Nombre: ");
nombres[i] = scanner.nextLine();
System.out.print("Peso en kilos: ");
pesos[i] = scanner.nextDouble();
System.out.print("Altura en centímetros: ");
alturas[i] = scanner.nextDouble();
scanner.nextLine(); // Limpiar el buffer
}
// Ir al menú de opciones
menuPacientes(nombres, pesos, alturas);
}
// Método para mostrar el menú
public static void menuPacientes(String[] nombres, double[] pesos, double[] alturas) {
Scanner scanner = new Scanner(System.in);
int opcion;
do {
System.out.println("\n--- Menú Gestión de Pacientes ---");
System.out.println("1. Mostrar listado de datos con IMC");
System.out.println("2. Mostrar el nombre de la persona con mayor IMC");
System.out.println("3. Comprobar qué personas superan cierta altura");
System.out.println("4. Verificar si la persona con menor IMC es la más pequeña");
System.out.println("5. Salir del programa");
System.out.print("Seleccione una opción: ");
opcion = scanner.nextInt();
switch (opcion) {
case 1:
mostrarListado(nombres, pesos, alturas);
break;
case 2:
mostrarMayorIMC(nombres, pesos, alturas);
break;
case 3:
comprobarAltura(nombres, alturas);
break;
case 4:
verificarMenorIMC(nombres, pesos, alturas);
break;
case 5:
System.out.println("Saliendo del programa...");
break;
default:
System.out.println("Opción no válida. Intente de nuevo.");
}
} while (opcion != 5);
}
Métodos Auxiliares
Método 1: Mostrar listado con IMC
public static void mostrarListado(String[] nombres, double[] pesos, double[] alturas) {
System.out.println("\n--- Listado de Pacientes con IMC ---");
for (int i = 0; i < nombres.length; i++) {
double alturaEnMetros = alturas[i] / 100;
double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
System.out.printf("Nombre: %s, Peso: %.2f kg, Altura: %.2f m, IMC: %.2f\n",
nombres[i], pesos[i], alturaEnMetros, imc);
}
}
Método 2: Mostrar el nombre de la persona con mayor IMC
public static void mostrarMayorIMC(String[] nombres, double[] pesos, double[] alturas) {
int indiceMayorIMC = 0;
double mayorIMC = 0;
for (int i = 0; i < nombres.length; i++) {
double alturaEnMetros = alturas[i] / 100;
double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
if (imc > mayorIMC) {
mayorIMC = imc;
indiceMayorIMC = i;
}
}
System.out.println("La persona con mayor IMC es: " + nombres[indiceMayorIMC]);
}
Método 3: Comprobar qué personas superan cierta altura
public static void comprobarAltura(String[] nombres, double[] alturas) {
Scanner scanner = new Scanner(System.in);
System.out.print("Ingrese una altura en centímetros: ");
double alturaIngresada = scanner.nextDouble();
System.out.println("Personas que superan " + alturaIngresada + " cm:");
for (int i = 0; i < nombres.length; i++) {
if (alturas[i] > alturaIngresada) {
System.out.println("- " + nombres[i]);
}
}
}
Método 4: Verificar si la persona con menor IMC es la más pequeña
public static void verificarMenorIMC(String[] nombres, double[] pesos, double[] alturas) {
int indiceMenorIMC = 0;
double menorIMC = Double.MAX_VALUE;
// Encontrar persona con menor IMC
for (int i = 0; i < nombres.length; i++) {
double alturaEnMetros = alturas[i] / 100;
double imc = pesos[i] / (alturaEnMetros * alturaEnMetros);
if (imc < menorIMC) {
menorIMC = imc;
indiceMenorIMC = i;
}
}
// Verificar si también es la más pequeña
boolean esMasPequena = true;
for (int i = 0; i < nombres.length; i++) {
if (alturas[i] < alturas[indiceMenorIMC] && i != indiceMenorIMC) {
esMasPequena = false;
break;
}
}
System.out.println("La persona con menor IMC es: " + nombres[indiceMenorIMC]);
if (esMasPequena) {
System.out.println("Y también es la más pequeña.");
} else {
System.out.println("Pero no es la más pequeña.");
}
}
}
Conclusión
Este programa en Java proporciona una solución completa para la gestión de datos de pacientes en un hospital, permitiendo realizar cálculos de IMC y diversas consultas relacionadas. Su diseño modular facilita la extensión y adaptación a futuras necesidades.