Menu
Coddy logo textTech

Fonksiyon Parametresi Olarak Struct'lar

Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 24 / 66.

Artık struct'ları nasıl oluşturacağınızı ve değiştireceğinizi bildiğinize göre, onları fonksiyonlarla nasıl kullanacağınızı keşfedelim. Rust'taki diğer veri türleri gibi, struct örneklerini fonksiyonlara aktarabilir ve fonksiyonlardan döndürebilirsiniz.

Bir yapıyı bir işleve geçirmek için, onu işlev tanımında bir parametre olarak eklemeniz yeterlidir:

fn calculate_area(rect: Rectangle) -> i32 {
    rect.width * rect.height
}

Bu işlev, parametre olarak bir Rectangle yapısı alır ve bir i32 döndürür. İşlevin içinde, tıpkı başka herhangi bir yerde yapacağın gibi, yapının alanlarına nokta gösterimini kullanarak erişebilirsin.

Yapı türünü dönüş türü olarak belirterek işlevlerden yapılar da döndürebilirsiniz:

fn create_square(size: i32) -> Rectangle {
    Rectangle {
        width: size,
        height: size,
    }
}

Yapıları işlevlerle birlikte kullanmak kodunuzu daha düzenli ve anlamlı hâle getirir. Birden fazla bağımsız parametre geçirmek yerine, ilişkili verileri bir arada gruplayabilir ve bunları iyi tanımlanmış tek bir birim olarak geçirebilirsiniz.

challenge icon

Görev

Kolay

Dört girdi alacaksınız: bir dikdörtgenin genişliği (tam sayı olarak), bir dikdörtgenin yüksekliği (tam sayı olarak), bir karenin kenar uzunluğu (tam sayı olarak) ve bir seçim numarası (1 veya 2). İki alan içeren bir Rectangle yapısı tanımlayın: width: i32 ve height: i32. Şu iki işlevi oluşturun: biri bir Rectangle alıp alanını hesaplamalı, diğeri bir kenar uzunluğu alıp bir kareyi temsil eden Rectangle döndürmelidir. Seçim girdisine göre uygun alanı hesaplayıp yazdırın.

Gereksinimler:

  • Şu alanlara sahip bir Rectangle yapısı tanımlayın: width: i32 ve height: i32
  • Parametre olarak bir Rectangle alan ve bir i32 (alan) döndüren calculate_area işlevini oluşturun
  • Parametre olarak bir i32 (kenar uzunluğu) alan ve genişliği ile yüksekliği eşit bir Rectangle döndüren create_square işlevini oluşturun
  • İlk girdiyi okuyun ve dikdörtgenin genişliği için i32 türüne dönüştürün
  • İkinci girdiyi okuyun ve dikdörtgenin yüksekliği için i32 türüne dönüştürün
  • Bu boyutlarla bir Rectangle örneği oluşturun
  • Üçüncü girdiyi okuyun ve karenin kenar uzunluğu için i32 türüne dönüştürün
  • Dördüncü girdiyi okuyun ve seçim için (1 veya 2) i32 türüne dönüştürün
  • Seçim 1 ise: dikdörtgenin alanını hesaplayıp yazdırın
  • Seçim 2 ise: create_square kullanarak bir kare oluşturun, ardından alanını hesaplayıp yazdırın

Girdi:

  • İlk satır: Dikdörtgen genişliği tam sayı olarak (ör. 8)
  • İkinci satır: Dikdörtgen yüksekliği tam sayı olarak (ör. 5)
  • Üçüncü satır: Karenin kenar uzunluğu tam sayı olarak (ör. 6)
  • Dördüncü satır: Seçim tam sayı olarak; 1 veya 2 (ör. 1)

Çıktı:

  • Seçim 1 ise: Rectangle area: [area]
  • Seçim 2 ise: Square area: [area]

Kendin dene

use std::io;

// TODO: Rectangle struct'ını burada tanımlayın


// TODO: calculate_area fonksiyonunu burada tanımlayın


// TODO: create_square fonksiyonunu burada tanımlayın


fn main() {
    // Dikdörtgen genişliğini oku
    let mut width_input = String::new();
    io::stdin().read_line(&mut width_input).expect("Failed to read line");
    let width: i32 = width_input.trim().parse().expect("Invalid input");
    
    // Dikdörtgen yüksekliğini oku
    let mut height_input = String::new();
    io::stdin().read_line(&mut height_input).expect("Failed to read line");
    let height: i32 = height_input.trim().parse().expect("Invalid input");
    
    // Kare kenar uzunluğunu oku
    let mut side_input = String::new();
    io::stdin().read_line(&mut side_input).expect("Failed to read line");
    let side: i32 = side_input.trim().parse().expect("Invalid input");
    
    // Seçimi oku
    let mut choice_input = String::new();
    io::stdin().read_line(&mut choice_input).expect("Failed to read line");
    let choice: i32 = choice_input.trim().parse().expect("Invalid input");
    
    // TODO: Kodunuzu aşağıya yazın
    // Bir Rectangle örneği oluşturun, seçimi kontrol edin ve uygun alanı hesaplayın
    
    
    // Seçime göre sonucu yazdırın
    // Kullanım: println!("Rectangle area: {}", area); veya println!("Square area: {}", area);
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi