Menu
Coddy logo textTech

Итоги: функция безопасного деления

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 48 из 66.

challenge icon

Задание

Легко

Вы получите два входных значения. Первое число представляет собой делимое, а второе — делитель. Создайте функцию safe_divide, которая принимает два параметра типа f64 и возвращает Result<f64, &'static str>. Функция должна возвращать Err("Cannot divide by zero"), если делитель равен нулю, и Ok с результатом деления в противном случае. Используйте выражение match для обработки результата и вывода соответствующего сообщения.

Требования:

  • Прочитать первый ввод (делимое) и удалить лишние пробелы
  • Преобразовать первый ввод в тип f64
  • Прочитать второй ввод (делитель) и удалить лишние пробелы
  • Преобразовать второй ввод в тип f64
  • Создать функцию safe_divide, которая принимает два параметра f64 и возвращает Result<f64, &'static str>
  • Внутри функции проверить, равен ли делитель 0.0:
    • Если да, вернуть Err("Cannot divide by zero")
    • Если нет, вернуть Ok(dividend / divisor)
  • Вызвать функцию с двумя полученными числами
  • Использовать выражение match для обработки Result
  • В ветке Ok(value) вывести: Division result: [value]
  • В ветке Err(error) вывести: Error: [error]

Ввод:

  • Первая строка: Число, представляющее делимое (например, 20.0)
  • Вторая строка: Число, представляющее делитель (например, 4.0)

Вывод:

  • Если деление успешно: Division result: [result]
  • Если деление на ноль: Error: Cannot divide by zero

Попробуйте сами

use std::io;

// TODO: Создайте здесь функцию safe_divide
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     Ваш код здесь
// }

fn main() {
    // Чтение первого ввода (делимое)
    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");
    
    // Чтение второго ввода (делитель)
    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: Вызовите safe_divide и используйте match для обработки Result
    // Выведите соответствующий результат в зависимости от полученного значения
}

Все уроки раздела Logic & Flow