Menu
Coddy logo textTech

Récapitulatif - Fonction de division sécurisée

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 48 sur 66.

challenge icon

Défi

Facile

Vous recevrez deux entrées. La première entrée est un nombre représentant le dividende, et la seconde entrée est un nombre représentant le diviseur. Créez une fonction safe_divide qui prend deux paramètres f64 et retourne un Result<f64, &'static str>. La fonction doit retourner Err("Cannot divide by zero") lorsque le diviseur est zéro, et Ok avec le résultat de la division sinon. Utilisez une expression match pour gérer le résultat et afficher la sortie appropriée.

Exigences :

  • Lire la première entrée (dividende) et supprimer les espaces blancs
  • Analyser la première entrée en f64
  • Lire la deuxième entrée (diviseur) et supprimer les espaces blancs
  • Analyser la deuxième entrée en f64
  • Créer une fonction safe_divide qui prend deux paramètres f64 et retourne Result<f64, &'static str>
  • À l'intérieur de la fonction, vérifiez si le diviseur est 0.0 :
    • Si oui, retournez Err("Cannot divide by zero")
    • Si non, retournez Ok(dividend / divisor)
  • Appeler la fonction avec les deux nombres analysés
  • Utiliser une expression match pour gérer le Result
  • Dans la branche Ok(value), affichez : Division result: [value]
  • Dans la branche Err(error), affichez : Error: [error]

Entrée :

  • Première ligne : Un nombre représentant le dividende (par ex., 20.0)
  • Deuxième ligne : Un nombre représentant le diviseur (par ex., 4.0)

Sortie :

  • Si la division réussit : Division result: [result]
  • Si division par zéro : Error: Cannot divide by zero

Essayez vous-même

use std::io;

// TODO: Créer la fonction safe_divide ici
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     Votre code ici
// }

fn main() {
    // Lire la première entrée (dividende)
    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");
    
    // Lire la deuxième entrée (diviseur)
    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: Appeler safe_divide et utiliser match pour gérer le Result
    // Afficher la sortie appropriée en fonction du résultat
}

Toutes les leçons de Logic & Flow