Menu
Coddy logo textTech

Özet - Yazdırılabilir Nokta

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

challenge icon

Görev

Kolay

Hata ayıklanabilen, güzel bir şekilde görüntülenebilen ve eşitlik için karşılaştırılabilen tam özellikli bir Point yapısı oluşturarak öğrendiğiniz tüm standart trait'leri bir araya getirelim!

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • point.rs: Genel (public) x ve y alanlarına (her ikisi de i32) sahip genel bir Point yapısı tanımlayın. Point yapınız üç yeteneği desteklemelidir:
    • {:?} ile hata ayıklama (debug) yazdırma — bunu otomatik olarak türetin (derive)
    • {} ile (x, y) formatında kullanıcı dostu görüntüleme — bunu std::fmt::Display kullanarak manuel olarak uygulayın
    • == ile eşitlik karşılaştırması — PartialEq trait'ini türetin
  • main.rs: Point modülünüzü dahil edin ve sağlanan girdileri kullanarak iki Point örneği oluşturun. İlk noktayı hata ayıklama (debug) formatıyla yazdırarak, ikinci noktayı görüntüleme (display) formatıyla yazdırarak ve iki noktanın eşit olup olmadığını karşılaştırarak her üç yeteneği de gösterin.

Çıktınız, her üç trait yeteneğinin de iş başında olduğunu göstermelidir:

Debug: Point { x: {x1}, y: {y1} }
Display: ({x2}, {y2})
Equal: {true/false}

Örneğin, 3, 5, 3, 5 girdileriyle:

Debug: Point { x: 3, y: 5 }
Display: (3, 5)
Equal: true

Ve 10, 20, 5, 15 girdileriyle:

Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: false

Dört girdi alacaksınız: ilk noktanın x ve y koordinatları, ardından ikinci noktanın x ve y koordinatları. Her birini i32 olarak ayrıştırın.

Kendin dene

mod point;

use point::Point;

fn main() {
    // Dört girdi oku: x1, y1, x2, y2
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let x1: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let y1: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let x2: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let y2: i32 = input.trim().parse().expect("Invalid input");

    // TODO: Girdileri kullanarak iki Point örneği oluştur

    // TODO: İlk noktayı hata ayıklama (debug) formatı {:?} kullanarak yazdır
    // Format: "Debug: Point { x: ..., y: ... }"

    // TODO: İkinci noktayı görüntüleme (display) formatı {} kullanarak yazdır
    // Format: "Display: (..., ...)"

    // TODO: İki noktayı karşılaştır ve sonucu yazdır
    // Format: "Equal: true" veya "Equal: false"
}

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