Menu
Coddy logo textTech

סיכום - ה-Shape Enum

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Rust של Coddy. שיעור 18 מתוך 61.

challenge icon

אתגר

קל

בואו נבנה מחשבון גאומטריה שמשתמש ב-enum כדי לייצג צורות שונות, שכל אחת מהן שומרת את המידות שלה. ה-enum Shape שלך ידגים כיצד טיפוס יחיד יכול להכיל מבני נתונים שונים ולספק התנהגות אחידה באמצעות מתודות.

תיצור שני קבצים כדי לארגן את הקוד שלך:

  • shape.rs: הגדר enum ציבורי בשם Shape עם שתי וריאציות:
    • Circle: מכילה ערך יחיד מסוג f64 שמייצג את הרדיוס (תחביר של tuple)
    • Rectangle: מכילה שדות בעלי שמות: width (f64) ו-height (f64)
    ממש את המתודה area בעזרת התאמת תבניות כדי לחשב את השטח הנכון בהתאם לווריאציה. עבור עיגולים, השתמש ב-3.14159 בתור π.
  • main.rs: הוסף את מודול הצורות שלך, צור מופע אחד מכל וריאציה של צורה באמצעות הקלטים שסופקו, והדפס את השטח של כל צורה.

המתודה area שלך צריכה להחזיר ערך מסוג f64. בזמן ההתאמה, פרק כל וריאציה כדי לחלץ את המידות שלה ולהחיל את הנוסחה המתאימה:

  • שטח עיגול: π × 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 באמצעות הרדיוס
    
    // TODO: צור צורה מסוג Rectangle באמצעות הרוחב והגובה
    
    // TODO: הדפס את השטח של כל צורה עם ספרה אחת אחרי הנקודה העשרונית
    // פורמט: "Circle area: {area}" ו-"Rectangle area: {area}"
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Rust אונליין