Menu
CoddyTech

Ringkasan: Enum Shape

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 18 dari 61.

challenge icon

Tantangan

Mudah

Mari buat kalkulator geometri yang menggunakan enum untuk merepresentasikan berbagai bentuk, yang masing-masing menyimpan dimensinya sendiri. Enum Shape milikmu akan menunjukkan bagaimana satu tipe dapat menampung berbagai struktur data dan menyediakan perilaku terpadu melalui method.

Kamu akan membuat dua file untuk mengatur kodemu:

  • shape.rs: Definisikan enum Shape publik dengan dua varian:
    • Circle: menyimpan satu nilai f64 yang merepresentasikan jari-jari (sintaks tuple)
    • Rectangle: menyimpan field bernama: width (f64) dan height (f64)
    Implementasikan method area yang menggunakan pencocokan pola untuk menghitung luas yang tepat berdasarkan variannya. Untuk lingkaran, gunakan 3.14159 sebagai π.
  • main.rs: Bawa masuk module shape-mu, buat satu instance dari setiap varian bentuk menggunakan input yang diberikan, lalu cetak luas setiap bentuk.

Method area milikmu harus mengembalikan f64. Saat melakukan pencocokan, uraikan setiap varian untuk mengambil dimensinya dan gunakan rumus yang sesuai:

  • Luas lingkaran: π × radius²
  • Luas persegi panjang: width × height

Output harus menampilkan luas setiap bentuk pada baris tersendiri, dengan tepat satu angka di belakang koma:

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

Contohnya, dengan jari-jari lingkaran 5.0 dan persegi panjang dengan lebar 4.0 serta tinggi 6.0, outputnya adalah:

Circle area: 78.5
Rectangle area: 24.0

Kamu akan menerima tiga input: jari-jari lingkaran, lebar persegi panjang, dan tinggi persegi panjang.

Coba sendiri

mod shape;

use shape::Shape;

fn main() {
    // Baca input
    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: Buat bentuk Circle menggunakan radius
    
    // TODO: Buat bentuk Rectangle menggunakan width dan height
    
    // TODO: Tampilkan luas setiap bentuk dengan satu angka di belakang koma
    // Format: "Circle area: {area}" dan "Rectangle area: {area}"
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Rust online