Menu
Coddy logo textTech

Özet - Shape Enum

Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 18 / 61.

challenge icon

Görev

Kolay

Farklı şekilleri temsil etmek için bir enum kullanan ve her birinin kendi boyutlarını sakladığı bir geometri hesaplayıcısı oluşturalım. Shape enum yapınız, tek bir türün nasıl farklı veri yapılarını barındırabileceğini ve metotlar aracılığıyla nasıl birleşik bir davranış sunabileceğini gösterecektir.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • shape.rs: İki varyantı olan genel bir Shape enum yapısı tanımlayın:
    • Circle — yarıçapı temsil eden tek bir f64 tutar (tuple sözdizimi)
    • Rectangle — isimlendirilmiş alanlar tutar: width (f64) ve height (f64)
    Varyanta göre doğru alanı hesaplamak için desen eşleştirme (pattern matching) kullanan bir area metodu uygulayın. Daireler için π olarak 3.14159 değerini kullanın.
  • main.rs: Şekil modülünüzü dahil edin, sağlanan girdileri kullanarak her bir şekil varyantından birer örnek oluşturun ve her şeklin alanını yazdırın.

area metodunuz bir f64 döndürmelidir. Eşleştirme yaparken, her varyantın boyutlarını çıkarmak için yapısını bozun (destructure) ve uygun formülü uygulayın:

  • Daire alanı: π × radius²
  • Dikdörtgen alanı: width × height

Çıktınız, her şeklin alanını kendi satırında ve tam olarak bir ondalık basamakla göstermelidir:

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

Örneğin, 5.0 daire yarıçapı ve 4.0 genişliğinde, 6.0 yüksekliğinde bir dikdörtgen ile çıktı şöyle olacaktır:

Circle area: 78.5
Rectangle area: 24.0

Üç girdi alacaksınız: dairenin yarıçapı, dikdörtgenin genişliği ve dikdörtgenin yüksekliği.

Kendin dene

mod shape;

use shape::Shape;

fn main() {
    // Girdileri oku
    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: Yarıçapı kullanarak bir Circle (Daire) şekli oluşturun
    
    // TODO: Genişlik ve yüksekliği kullanarak bir Rectangle (Dikdörtgen) şekli oluşturun
    
    // TODO: Her şeklin alanını virgülden sonra bir basamak olacak şekilde yazdırın
    // Format: "Circle area: {area}" ve "Rectangle area: {area}"
}

Object Oriented Programming bölümündeki tüm dersler