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.
Défi
FacileVous 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_dividequi prend deux paramètresf64et retourneResult<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)
- Si oui, retournez
- Appeler la fonction avec les deux nombres analysés
- Utiliser une expression
matchpour gérer leResult - 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
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book7Gestion des erreurs avec 'Result'
Qu'est-ce qu'un 'Result' ?Utiliser 'match' avec 'Result'is_ok() et is_err()Raccourcis : unwrap et expectL'opérateur point d'interrogation '?'Analyse de chaînes en nombresRécapitulatif - Fonction de division sécurisée2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final