Menu
Coddy logo textTech

Recapitulação - Função de Divisão Segura

Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 48 de 66.

challenge icon

Desafio

Fácil

Você receberá duas entradas. A primeira entrada é um número que representa o dividendo, e a segunda entrada é um número que representa o divisor. Crie uma função safe_divide que aceite dois parâmetros f64 e retorne um Result<f64, &'static str>. A função deve retornar Err("Cannot divide by zero") quando o divisor for zero e, caso contrário, retornar Ok com o resultado da divisão. Use uma expressão match para lidar com o resultado e imprimir a saída apropriada.

Requisitos:

  • Leia a primeira entrada (dividendo) e remova os espaços em branco
  • Converta a primeira entrada para f64
  • Leia a segunda entrada (divisor) e remova os espaços em branco
  • Converta a segunda entrada para f64
  • Crie uma função safe_divide que aceite dois parâmetros f64 e retorne Result<f64, &'static str>
  • Dentro da função, verifique se o divisor é 0.0:
    • Se sim, retorne Err("Cannot divide by zero")
    • Se não, retorne Ok(dividend / divisor)
  • Chame a função com os dois números convertidos
  • Use uma expressão match para lidar com o Result
  • No braço Ok(value), imprima: Division result: [value]
  • No braço Err(error), imprima: Error: [error]

Entrada:

  • Primeira linha: um número que representa o dividendo (por exemplo, 20.0)
  • Segunda linha: um número que representa o divisor (por exemplo, 4.0)

Saída:

  • Se a divisão for bem-sucedida: Division result: [result]
  • Se houver divisão por zero: Error: Cannot divide by zero

Experimente você mesmo

use std::io;

// TODO: Crie a função safe_divide aqui
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     Seu código aqui
// }

fn main() {
    // Lê a primeira entrada (dividendo)
    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");
    
    // Lê a 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: Chame safe_divide e use match para lidar com o Result
    // Imprima a saída apropriada com base no resultado
}

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de Rust online