Menu
CoddyTech

Memeriksa Stok

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 51 dari 66.

challenge icon

Tantangan

Mudah

Kamu akan menerima empat input. Input pertama adalah nama item yang akan diperiksa. Input kedua adalah daftar nama item dalam inventaris yang dipisahkan dengan koma. Input ketiga adalah daftar harga yang sesuai dengan setiap item, dipisahkan dengan koma. Input keempat adalah daftar jumlah yang sesuai dengan setiap item, dipisahkan dengan koma. Buat HashMap untuk menyimpan data inventaris, dengan kunci berupa nama item dan nilai berupa tuple yang berisi harga dan jumlah (f64, i32). Lalu, periksa apakah item yang diminta ada dalam inventaris menggunakan .get() dan cetak informasi stok yang sesuai.

Persyaratan:

  • Impor HashMap dari std::collections
  • Baca input pertama (nama item yang akan diperiksa) dan hapus spasi di awal dan akhir
  • Baca input kedua (nama item yang dipisahkan dengan koma) dan hapus spasi di awal dan akhir
  • Baca input ketiga (harga yang dipisahkan dengan koma) dan hapus spasi di awal dan akhir
  • Baca input keempat (jumlah yang dipisahkan dengan koma) dan hapus spasi di awal dan akhir
  • Buat HashMap<String, (f64, i32)> yang mutable untuk inventaris
  • Pisahkan nama item berdasarkan koma
  • Pisahkan harga berdasarkan koma dan parsing masing-masing menjadi f64
  • Pisahkan jumlah berdasarkan koma dan parsing masing-masing menjadi i32
  • Masukkan setiap item ke dalam inventaris beserta harga dan jumlah yang sesuai sebagai tuple
  • Gunakan .get() untuk memeriksa apakah item yang diminta ada dalam inventaris
  • Gunakan ekspresi match untuk menangani Option yang dikembalikan oleh .get()
  • Pada arm Some, ambil harga dan jumlah dari tuple lalu cetak:
    • [item_name] is in stock
    • Price: $[price]
    • Quantity: [quantity]
  • Pada arm None, cetak: [item_name] is not in stock

Input:

  • Baris pertama: Nama item yang akan diperiksa (misalnya, Laptop)
  • Baris kedua: Nama item yang dipisahkan dengan koma (misalnya, Laptop,Mouse,Keyboard)
  • Baris ketiga: Harga yang dipisahkan dengan koma (misalnya, 999.99,25.50,75.00)
  • Baris keempat: Jumlah yang dipisahkan dengan koma (misalnya, 15,50,30)

Output:

  • Jika item ada dalam inventaris:
    • Baris pertama: [item_name] is in stock
    • Baris kedua: Price: $[price]
    • Baris ketiga: Quantity: [quantity]
  • Jika item tidak ada: [item_name] is not in stock

Coba sendiri

use std::collections::HashMap;
use std::io;

fn main() {
    // Baca nama barang yang akan diperiksa
    let mut item_to_check = String::new();
    io::stdin().read_line(&mut item_to_check).expect("Failed to read line");
    let item_to_check = item_to_check.trim();
    
    // Baca nama-nama barang yang dipisahkan koma
    let mut items_input = String::new();
    io::stdin().read_line(&mut items_input).expect("Failed to read line");
    let items_input = items_input.trim();
    
    // Baca harga-harga yang dipisahkan koma
    let mut prices_input = String::new();
    io::stdin().read_line(&mut prices_input).expect("Failed to read line");
    let prices_input = prices_input.trim();
    
    // Baca jumlah barang yang dipisahkan koma
    let mut quantities_input = String::new();
    io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
    let quantities_input = quantities_input.trim();
    
    // TODO: Tulis kodemu di bawah ini
    // Buat HashMap untuk menyimpan data inventaris
    // Pisahkan input dan isi HashMap
    // Gunakan .get() untuk memeriksa apakah barang tersebut ada
    // Gunakan match untuk menangani Option dan tampilkan output yang sesuai
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Rust online