Menu
Coddy logo textTech

Podsumowanie — bezpieczna funkcja dzielenia

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 48 z 66.

challenge icon

Wyzwanie

Łatwy

Otrzymasz dwa dane wejściowe. Pierwsze to liczba reprezentująca dzielną, a drugie to liczba reprezentująca dzielnik. Utwórz funkcję safe_divide, która przyjmuje dwa parametry typu f64 i zwraca wartość typu Result<f64, &'static str>. Funkcja powinna zwracać Err("Cannot divide by zero"), gdy dzielnik wynosi zero, a w przeciwnym razie Ok z wynikiem dzielenia. Użyj wyrażenia match, aby obsłużyć wynik i wypisać odpowiedni komunikat.

Wymagania:

  • Odczytaj pierwsze dane wejściowe (dzielną) i usuń białe znaki
  • Parsuj pierwsze dane wejściowe do typu f64
  • Odczytaj drugie dane wejściowe (dzielnik) i usuń białe znaki
  • Parsuj drugie dane wejściowe do typu f64
  • Utwórz funkcję safe_divide, która przyjmuje dwa parametry typu f64 i zwraca wartość typu Result<f64, &'static str>
  • Wewnątrz funkcji sprawdź, czy dzielnik wynosi 0.0:
    • Jeśli tak, zwróć Err("Cannot divide by zero")
    • Jeśli nie, zwróć Ok(dividend / divisor)
  • Wywołaj funkcję z dwiema sparsowanymi liczbami
  • Użyj wyrażenia match, aby obsłużyć wartość typu Result
  • W ramieniu Ok(value) wypisz: Division result: [value]
  • W ramieniu Err(error) wypisz: Error: [error]

Dane wejściowe:

  • Pierwszy wiersz: liczba reprezentująca dzielną (np. 20.0)
  • Drugi wiersz: liczba reprezentująca dzielnik (np. 4.0)

Wynik:

  • Jeśli dzielenie się powiedzie: Division result: [result]
  • Jeśli nastąpi dzielenie przez zero: Error: Cannot divide by zero

Spróbuj swoich sił

use std::io;

// TODO: Utwórz tutaj funkcję safe_divide
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     Twój kod tutaj
// }

fn main() {
    // Wczytaj pierwszą wartość wejściową (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");
    
    // Wczytaj drugą wartość wejściową (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: Wywołaj safe_divide i użyj match do obsługi Result
    // Wypisz odpowiedni wynik
}

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Rust online