En nuestro blog mellizo, vimos como determinar el biotipo de una persona en Go. Ahora veremos el mismo programa implementado en Rust.
El programa solicitará al usuario su peso y talla, obteniendo así su biotipo.
Pero... ¿Qué es el biotipo?
El biotipo de una persona e refiere a las características corporales, como la estructura ósea, la musculatura y la predisposición al metabolismo, que influyen en la salud, el rendimiento físico y la respuesta a la dieta o ejercicio.
Existen varios biotipos, pero el general comprende estos tres:
- Ectomorfo: Cuerpo delgado, extremidades largas, dificultad para ganar peso o masa muscular, metabolismo rápido. En otras palabras, sería Longitipo.
- Mesomorfo: Cuerpo atlético, facilidad para ganar músculo, estructura ósea equilibrada, metabolismo eficiente. En otras palabras, sería Normotipo.
- Endomorfo: Cuerpo con mayor tendencia a acumular grasa, estructura más ancha, metabolismo más lento. En otras palabras, sería Braquitipo.
biotipos.rs
use std::collections::HashMap; use std::io; fn obtener_valor(diccionario: &HashMap<&str, f64>, clave: &str) -> f64 { *diccionario.get(clave).unwrap_or(&-999.0) } fn main() { let peso_dict: HashMap<&str, f64> = [ ("85.54", 3.0), ("83.79", 2.75), ("82.04", 2.5), ("80.29", 2.25), ("78.54", 2.0), ("76.79", 1.75), ("75.04", 1.5), ("73.29", 1.25), ("71.54", 1.0), ("69.79", 0.75), ("68.04", 0.50), ("66.29", 0.25), ("64.54", 0.0), ("62.79", -0.25), ("61.04", -0.50), ("59.29", -0.75), ("57.54", -1.0), ("55.79", -1.25), ("54.04", -1.50), ("52.29", -1.75), ("50.54", -2.0), ("45.79", -2.25), ("47.04", -2.5), ("45.29", -2.75), ("43.54", -3.0) ].iter().cloned().collect(); let estatura_dict: HashMap<&str, f64> = [ ("1.87", 3.0), ("1.86", 2.75), ("1.85", 2.50), ("1.83", 2.23), ("1.82", 2.0), ("1.81", 1.75), ("1.79", 1.50), ("1.78", 2.25), ("1.77", 1.0), ("1.75", 0.75), ("1.74", 0.50), ("1.73", 0.25), ("1.71", 0.0), ("1.7", -0.25), ("1.69", -0.50), ("1.67", -0.75), ("1.66", -1.0), ("1.65", -1.25), ("1.63", -1.50), ("1.62", -1.75), ("1.61", -2.0), ("1.59", -2.25), ("1.58", -2.50), ("1.57", -2.75), ("1.55", -3.0) ].iter().cloned().collect(); let mut peso = String::new(); let mut estatura = String::new(); println!("Tu peso es de (ejemplo: 56.00): "); io::stdin().read_line(&mut peso).expect("Error al leer la entrada"); let peso = peso.trim(); println!("Tu estatura es de (ejemplo: 1.55): "); io::stdin().read_line(&mut estatura).expect("Error al leer la entrada"); let estatura = estatura.trim(); let valor_peso = obtener_valor(&peso_dict, peso); let valor_estatura = obtener_valor(&estatura_dict, estatura); println!("valor peso: {:.1}", valor_peso); println!("valor estatura: {:.1}", valor_estatura); if valor_peso == -999.0 || valor_estatura == -999.0 { println!("Error: Peso o estatura no válidos. Asegúrate de ingresar valores dentro del rango permitido."); return; } let desviacion = valor_peso - valor_estatura; if desviacion < 0.0 { println!("Tu biotipo es: longitipo. Largo. Delgado. De apariencia frágil."); } else if desviacion > 0.0 { println!("Tu biotipo es: braquitipo. Sobrepeso. Acumula grasas. Puede ganar musculatura si realiza ejercicio."); } else { println!("Tu biotipo es: normotipo. Fuerte. Atlético. Musculoso."); } }
Dar formato al programa:
$ rustfmt biotipos.rs
Compilamos:
$ rustc biotipos.rs
Ejecutamos:
$ ./biotipos.exe
Salida:
biotipos.exe Tu peso es de (ejemplo: 56.00): 55.79 Tu estatura es de (ejemplo: 1.55): 1.74 Tu biotipo es: longitipo. Largo. Delgado. De apariencia frágil.
El programa requiere mejoras, pero es funcional para los pesos y tallas de los hashmap definidos.
Enlaces:
https://codemonkeyjunior.blogspot.com/search/label/biotipo
Comentarios
Publicar un comentario