Menu
Coddy logo textTech

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

Parte da seção Logic & Flow 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 representando o dividendo, e a segunda entrada é um número representando o divisor. Crie uma função safe_divide que receba 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 Ok com o resultado da divisão caso contrário. Use uma expressão match para tratar 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 receba 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 tratar 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 representando o dividendo (ex: 20.0)
  • Segunda linha: Um número representando o divisor (ex: 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 Logic & Flow