Sprawdzanie stanu magazynowego
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 51 z 66.
Wyzwanie
ŁatwyOtrzymasz cztery dane wejściowe. Pierwsze to nazwa produktu, którego dostępność należy sprawdzić. Drugie to oddzielona przecinkami lista nazw produktów w magazynie. Trzecie to oddzielona przecinkami lista cen odpowiadających poszczególnym produktom. Czwarte to oddzielona przecinkami lista ilości odpowiadających poszczególnym produktom. Utwórz HashMap, aby przechowywać dane magazynowe, gdzie kluczem jest nazwa produktu, a wartością krotka zawierająca cenę i ilość (f64, i32). Następnie sprawdź, czy żądany produkt znajduje się w magazynie, używając .get(), i wyświetl odpowiednie informacje o jego dostępności.
Wymagania:
- Zaimportuj
HashMapzstd::collections - Odczytaj pierwsze dane wejściowe (nazwę produktu do sprawdzenia) i usuń białe znaki z początku i końca
- Odczytaj drugie dane wejściowe (oddzielone przecinkami nazwy produktów) i usuń białe znaki z początku i końca
- Odczytaj trzecie dane wejściowe (oddzielone przecinkami ceny) i usuń białe znaki z początku i końca
- Odczytaj czwarte dane wejściowe (oddzielone przecinkami ilości) i usuń białe znaki z początku i końca
- Utwórz mutowalny
HashMap<String, (f64, i32)>na potrzeby danych magazynowych - Podziel nazwy produktów po przecinkach
- Podziel ceny po przecinkach i sparsuj każdą z nich jako
f64 - Podziel ilości po przecinkach i sparsuj każdą z nich jako
i32 - Wstaw każdy produkt do magazynu wraz z odpowiadającą mu ceną i ilością w postaci krotki
- Użyj
.get(), aby sprawdzić, czy żądany produkt znajduje się w magazynie - Użyj wyrażenia
match, aby obsłużyć wartośćOptionzwracaną przez.get() - W gałęzi
Somewyodrębnij cenę i ilość z krotki i wyświetl:[item_name] is in stockPrice: $[price]Quantity: [quantity]
- W gałęzi
Nonewyświetl:[item_name] is not in stock
Dane wejściowe:
- Pierwszy wiersz: nazwa produktu do sprawdzenia (np.
Laptop) - Drugi wiersz: oddzielone przecinkami nazwy produktów (np.
Laptop,Mouse,Keyboard) - Trzeci wiersz: oddzielone przecinkami ceny (np.
999.99,25.50,75.00) - Czwarty wiersz: oddzielone przecinkami ilości (np.
15,50,30)
Dane wyjściowe:
- Jeśli produkt znajduje się w magazynie:
- Pierwszy wiersz:
[item_name] is in stock - Drugi wiersz:
Price: $[price] - Trzeci wiersz:
Quantity: [quantity]
- Pierwszy wiersz:
- Jeśli produktu nie ma w magazynie:
[item_name] is not in stock
Spróbuj swoich sił
use std::collections::HashMap;
use std::io;
fn main() {
// Wczytaj nazwę przedmiotu do sprawdzenia
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();
// Wczytaj nazwy przedmiotów oddzielone przecinkami
let mut items_input = String::new();
io::stdin().read_line(&mut items_input).expect("Failed to read line");
let items_input = items_input.trim();
// Wczytaj ceny oddzielone przecinkami
let mut prices_input = String::new();
io::stdin().read_line(&mut prices_input).expect("Failed to read line");
let prices_input = prices_input.trim();
// Wczytaj ilości oddzielone przecinkami
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: Napisz swój kod poniżej
// Utwórz HashMap do przechowywania danych o stanie magazynowym
// Podziel dane wejściowe i wypełnij HashMap
// Użyj .get(), aby sprawdzić, czy przedmiot istnieje
// Użyj match do obsługi Option i wyświetlenia odpowiedniego wyniku
}Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online