Menu
Coddy logo textTech

Sprawdzanie stanu magazynowego

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 51 z 66.

challenge icon

Wyzwanie

Łatwy

Otrzymasz 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 HashMap z std::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ść Option zwracaną przez .get()
  • W gałęzi Some wyodrębnij cenę i ilość z krotki i wyświetl:
    • [item_name] is in stock
    • Price: $[price]
    • Quantity: [quantity]
  • W gałęzi None wyś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]
  • 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

Poćwicz samodzielnie: Kompilator Rust online