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

ملخص - التعداد Shape

جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 18 من 61.

challenge icon

التحدي

سهل

لنقم ببناء آلة حاسبة هندسية تستخدم enum لتمثيل أشكال مختلفة، حيث يخزن كل منها أبعاده الخاصة. سيوضح الـ Shape enum الخاص بك كيف يمكن لنوع واحد أن يحمل هياكل بيانات مختلفة ويوفر سلوكاً موحداً من خلال الدوال (methods).

ستقوم بإنشاء ملفين لتنظيم الكود الخاص بك:

  • shape.rs: قم بتعريف Shape enum عام مع متغيرين (variants):
    • Circle — يحمل قيمة f64 واحدة تمثل نصف القطر (صيغة tuple)
    • Rectangle — يحمل حقولاً مسماة: width (f64) و height (f64)
    قم بتنفيذ دالة area تستخدم مطابقة الأنماط (pattern matching) لحساب المساحة الصحيحة بناءً على المتغير. بالنسبة للدوائر، استخدم 3.14159 كقيمة لـ π.
  • main.rs: قم باستيراد موديول الشكل الخاص بك، وأنشئ مثيلاً واحداً لكل متغير من متغيرات الشكل باستخدام المدخلات المقدمة، واطبع مساحة كل شكل.

يجب أن تعيد دالة area قيمة من نوع f64. عند المطابقة، قم بتفكيك (destructure) كل متغير لاستخراج أبعاده وتطبيق الصيغة المناسبة:

  • مساحة الدائرة: π × radius²
  • مساحة المستطيل: width × height

يجب أن يعرض مخرجك مساحة كل شكل في سطر مستقل، مع منزلة عشرية واحدة بالضبط:

Circle area: {area}
Rectangle area: {area}

على سبيل المثال، إذا كان نصف قطر الدائرة 5.0 والمستطيل بعرض 4.0 وطول 6.0، سيكون المخرج:

Circle area: 78.5
Rectangle area: 24.0

ستتلقى ثلاثة مدخلات: نصف قطر الدائرة، وعرض المستطيل، وطول المستطيل.

جرّب بنفسك

mod shape;

use shape::Shape;

fn main() {
    // قراءة المدخلات
    let mut radius_input = String::new();
    std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
    let radius: f64 = radius_input.trim().parse().expect("Invalid number");

    let mut width_input = String::new();
    std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
    let width: f64 = width_input.trim().parse().expect("Invalid number");

    let mut height_input = String::new();
    std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
    let height: f64 = height_input.trim().parse().expect("Invalid number");

    // TODO: إنشاء شكل Circle باستخدام radius
    
    // TODO: إنشاء شكل Rectangle باستخدام width و height
    
    // TODO: طباعة مساحة كل شكل بمنزلة عشرية واحدة
    // التنسيق: "Circle area: {area}" و "Rectangle area: {area}"
}

جميع دروس Object Oriented Programming