Menu
Coddy logo textTech

Resumen - Función de división segura

Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 48 de 66.

challenge icon

Desafío

Fácil

Recibirás dos entradas. La primera entrada es un número que representa el dividendo, y la segunda entrada es un número que representa el divisor. Crea una función safe_divide que tome dos parámetros f64 y devuelva un Result<f64, &'static str>. La función debe devolver Err("Cannot divide by zero") cuando el divisor sea cero, y Ok con el resultado de la división en caso contrario. Usa una expresión match para manejar el resultado e imprimir la salida apropiada.

Requisitos:

  • Lee la primera entrada (dividendo) y elimina los espacios en blanco
  • Convierte la primera entrada a f64
  • Lee la segunda entrada (divisor) y elimina los espacios en blanco
  • Convierte la segunda entrada a f64
  • Crea una función safe_divide que tome dos parámetros f64 y devuelva Result<f64, &'static str>
  • Dentro de la función, comprueba si el divisor es 0.0:
    • Si es así, devuelve Err("Cannot divide by zero")
    • Si no, devuelve Ok(dividend / divisor)
  • Llama a la función con los dos números procesados
  • Usa una expresión match para manejar el Result
  • En el brazo Ok(value), imprime: Division result: [value]
  • En el brazo Err(error), imprime: Error: [error]

Entrada:

  • Primera línea: Un número que representa el dividendo (por ejemplo, 20.0)
  • Segunda línea: Un número que representa el divisor (por ejemplo, 4.0)

Salida:

  • Si la división es exitosa: Division result: [result]
  • Si es división por cero: Error: Cannot divide by zero

Pruébalo tú mismo

use std::io;

// TODO: Crea la función safe_divide aquí
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     Tu código aquí
// }

fn main() {
    // Leer la primera entrada (dividendo)
    let mut dividend_input = String::new();
    io::stdin().read_line(&mut dividend_input).expect("Failed to read line");
    let dividend: f64 = dividend_input.trim().parse().expect("Invalid number");
    
    // Leer la segunda entrada (divisor)
    let mut divisor_input = String::new();
    io::stdin().read_line(&mut divisor_input).expect("Failed to read line");
    let divisor: f64 = divisor_input.trim().parse().expect("Invalid number");
    
    // TODO: Llamar a safe_divide y usar match para manejar el Result
    // Imprimir la salida apropiada basada en el resultado
}

Todas las lecciones de Logic & Flow