Menu
Coddy logo textTech

Riepilogo: funzione di divisione sicura

Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 48 di 66.

challenge icon

Sfida

Facile

Riceverai due input. Il primo input è un numero che rappresenta il dividendo e il secondo input è un numero che rappresenta il divisore. Crea una funzione safe_divide che accetta due parametri f64 e restituisce un Result<f64, &'static str>. La funzione dovrebbe restituire Err("Cannot divide by zero") quando il divisore è zero e Ok con il risultato della divisione in caso contrario. Usa un'espressione match per gestire il risultato e stampare l'output appropriato.

Requisiti:

  • Leggi il primo input (dividendo) e rimuovi gli spazi bianchi
  • Analizza il primo input come f64
  • Leggi il secondo input (divisore) e rimuovi gli spazi bianchi
  • Analizza il secondo input come f64
  • Crea una funzione safe_divide che accetta due parametri f64 e restituisce Result<f64, &'static str>
  • All'interno della funzione, controlla se il divisore è 0.0:
    • Se sì, restituisci Err("Cannot divide by zero")
    • Se no, restituisci Ok(dividend / divisor)
  • Chiama la funzione con i due numeri analizzati
  • Usa un'espressione match per gestire il Result
  • Nel ramo Ok(value), stampa: Division result: [value]
  • Nel ramo Err(error), stampa: Error: [error]

Input:

  • Prima riga: un numero che rappresenta il dividendo (ad es., 20.0)
  • Seconda riga: un numero che rappresenta il divisore (ad es., 4.0)

Output:

  • Se la divisione ha esito positivo: Division result: [result]
  • Se la divisione è per zero: Error: Cannot divide by zero

Provalo tu

use std::io;

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

fn main() {
    // Lee la primera entrada (dividend)
    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");
    
    // Lee 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: Llama a safe_divide y usa match para manejar el Result
    // Imprime la salida adecuada según el resultado
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Rust online