Menjual Barang
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 52 dari 66.
Tantangan
MudahKamu akan menerima lima input. Input pertama adalah nama barang yang akan dijual. Input kedua adalah jumlah yang akan dijual. Input ketiga adalah list nama barang dalam inventaris yang dipisahkan dengan koma. Input keempat adalah list harga yang sesuai dengan setiap barang, dipisahkan dengan koma. Input kelima adalah list jumlah setiap barang, dipisahkan dengan koma. Buat HashMap untuk menyimpan data inventaris, dengan nama barang sebagai key dan nilai berupa tuple yang berisi harga dan jumlah (f64, i32). Lalu, coba jual jumlah barang yang diminta.
Persyaratan:
- Impor
HashMapdaristd::collections - Baca input pertama (nama barang yang akan dijual) dan hapus whitespace di sekitarnya
- Baca input kedua (jumlah yang akan dijual) dan hapus whitespace di sekitarnya
- Parse jumlah yang akan dijual menjadi
i32 - Baca input ketiga (nama barang yang dipisahkan dengan koma) dan hapus whitespace di sekitarnya
- Baca input keempat (harga yang dipisahkan dengan koma) dan hapus whitespace di sekitarnya
- Baca input kelima (jumlah barang yang dipisahkan dengan koma) dan hapus whitespace di sekitarnya
- Buat
HashMap<String, (f64, i32)>yang mutable untuk inventaris - Pisahkan nama barang berdasarkan koma
- Pisahkan harga berdasarkan koma dan parse masing-masing menjadi
f64 - Pisahkan jumlah barang berdasarkan koma dan parse masing-masing menjadi
i32 - Masukkan setiap barang ke inventaris bersama harga dan jumlahnya yang sesuai sebagai tuple
- Gunakan
.get()untuk memeriksa apakah barang yang diminta ada dalam inventaris - Gunakan ekspresi
matchuntuk menanganiOptionyang dikembalikan oleh.get() - Di arm
Some:- Ambil harga dan jumlah saat ini dari tuple
- Periksa apakah jumlah saat ini lebih besar dari atau sama dengan jumlah yang akan dijual
- Jika ya:
- Hitung jumlah baru dengan mengurangi jumlah yang akan dijual dari jumlah saat ini
- Hitung harga total dengan mengalikan harga barang dengan jumlah yang akan dijual
- Gunakan
.insert()untuk memperbarui inventaris dengan jumlah baru - Cetak:
Sold [quantity_to_sell] [item_name] - Cetak:
Total: $[total_price] - Cetak:
Remaining stock: [new_quantity]
- Jika tidak (stok tidak cukup):
- Cetak:
Insufficient stock for [item_name] - Cetak:
Available: [current_quantity]
- Cetak:
- Di arm
None, cetak:[item_name] is not in stock
Input:
- Baris pertama: Nama barang yang akan dijual (misalnya,
Mouse) - Baris kedua: Jumlah yang akan dijual (misalnya,
10) - Baris ketiga: Nama barang yang dipisahkan dengan koma (misalnya,
Laptop,Mouse,Keyboard) - Baris keempat: Harga yang dipisahkan dengan koma (misalnya,
999.99,25.50,75.00) - Baris kelima: Jumlah barang yang dipisahkan dengan koma (misalnya,
15,50,30)
Output:
- Jika barang ada dan stoknya cukup:
- Baris pertama:
Sold [quantity_to_sell] [item_name] - Baris kedua:
Total: $[total_price] - Baris ketiga:
Remaining stock: [new_quantity]
- Baris pertama:
- Jika barang ada tetapi stoknya tidak cukup:
- Baris pertama:
Insufficient stock for [item_name] - Baris kedua:
Available: [current_quantity]
- Baris pertama:
- Jika barang tidak ada:
[item_name] is not in stock
Coba sendiri
use std::collections::HashMap;
use std::io;
fn main() {
// Baca input
let mut item_to_sell = String::new();
io::stdin().read_line(&mut item_to_sell).expect("Failed to read line");
let item_to_sell = item_to_sell.trim();
let mut quantity_to_sell_input = String::new();
io::stdin().read_line(&mut quantity_to_sell_input).expect("Failed to read line");
let quantity_to_sell: i32 = quantity_to_sell_input.trim().parse().expect("Invalid number");
let mut item_names_input = String::new();
io::stdin().read_line(&mut item_names_input).expect("Failed to read line");
let item_names_input = item_names_input.trim();
let mut prices_input = String::new();
io::stdin().read_line(&mut prices_input).expect("Failed to read line");
let prices_input = prices_input.trim();
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 inventaris
// Proses input dan susun inventaris
// Periksa apakah barang tersedia dan proses penjualannya
}Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode AkhirLatihan sendiri: Compiler Rust online