Menu
Coddy logo textTech

まとめ - 安全な除算関数

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 48/66。

challenge icon

チャレンジ

簡単

2つの入力を受け取ります。最初の入力は被除数(割られる数)を表す数値で、2番目の入力は除数(割る数)を表す数値です。2つの f64 パラメータを受け取り、Result<f64, &'static str> を返す関数 safe_divide を作成してください。この関数は、除数がゼロの場合は Err("Cannot divide by zero") を返し、それ以外の場合は除算結果を含む Ok を返す必要があります。match 式を使用して結果を処理し、適切な出力を表示してください。

要件:

  • 最初の入力(被除数)を読み込み、空白をトリミングする
  • 最初の入力を f64 にパースする
  • 2番目の入力(除数)を読み込み、空白をトリミングする
  • 2番目の入力を f64 にパースする
  • 2つの f64 パラメータを受け取り、Result<f64, &'static str> を返す関数 safe_divide を作成する
  • 関数内で、除数が 0.0 かどうかを確認する:
    • もしそうなら、Err("Cannot divide by zero") を返す
    • そうでなければ、Ok(dividend / divisor) を返す
  • パースした2つの数値を使用して関数を呼び出す
  • match 式を使用して Result を処理する
  • Ok(value) アームでは、Division result: [value] と出力する
  • Err(error) アームでは、Error: [error] と出力する

入力:

  • 1行目: 被除数を表す数値 (例: 20.0)
  • 2行目: 除数を表す数値 (例: 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");
    
    // 2番目の入力(除数)を読み取ります
    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のすべてのレッスン