diff --git a/ejercicios/reto14/src/main.rs b/ejercicios/reto14/src/main.rs index 560fa9a..b201c77 100644 --- a/ejercicios/reto14/src/main.rs +++ b/ejercicios/reto14/src/main.rs @@ -5,18 +5,62 @@ * realicen esas operaciones directamente. */ -fn decimal_a_binario(n: i32) -> String { - n.to_string() +fn decimal_a_base(mut n: i32, base: i32) -> String { + let mut numero_binario = String::new(); + while n >= base { + let rest = n % base; + numero_binario = numero_binario + &rest.to_string(); + n = n / base; + } + numero_binario = numero_binario + &n.to_string(); + numero_binario = numero_binario.chars().rev().collect(); + numero_binario.to_string() +} + +fn decimal_a_hexadecimal(mut n: i32) -> String { + let mut numero_hexadecimal = String::from(""); + while n >= 16 { + let rest = n % 16; + if rest > 10 && rest < 16 { + let vector_hexadecimal = ["a", "b", "c", "d", "e", "f"]; + let num = rest - 10; + let letra = vector_hexadecimal[num as usize]; + numero_hexadecimal = numero_hexadecimal + letra; + } else if rest > 15 { + let num = rest - 16; + numero_hexadecimal = numero_hexadecimal + &num.to_string(); + } else { + numero_hexadecimal = numero_hexadecimal + &rest.to_string(); + } + n = n / 16; + } + numero_hexadecimal = numero_hexadecimal + &n.to_string(); + numero_hexadecimal = numero_hexadecimal + &"x0".to_string(); + numero_hexadecimal = numero_hexadecimal.chars().rev().collect(); + numero_hexadecimal.to_string() } fn main() { - let num = 95; + let num = 345; println!("El número decimal {}, en binario es: {:b}", num, num); println!( "El número decimal {}, en binario es: {}", num, - decimal_a_binario(num) + decimal_a_base(num, 2) ); + println!("El número decimal {}, en octal es: {:o}", num, num); + println!( + "El número decimal {}, en octal es: {}", + num, + decimal_a_base(num, 8) + ); + println!("El número decimal {}, en Hexadecimal es: {:#02x}", num, num); + println!( + "El número decimal {}, en Hexadecimal es: {}", + num, + decimal_a_hexadecimal(num) + ); + // https://lasmatesfaciles.com/2021/04/28/convertir-decimal-a-octal/ // por mi parte también binario }