Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - دالة القسمة الآمنة

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 48 من 66.

challenge icon

التحدي

سهل

ستتلقى مدخلين. المدخل الأول هو رقم يمثل المقسوم (dividend)، والمدخل الثاني هو رقم يمثل المقسوم عليه (divisor). قم بإنشاء دالة 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