Vendere un articolo
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 52 di 66.
Sfida
FacileRiceverai cinque input. Il primo input è il nome dell'articolo da vendere. Il secondo input è la quantità da vendere. Il terzo input è un elenco di nomi degli articoli presenti nell'inventario, separati da virgole. Il quarto input è un elenco di prezzi corrispondenti a ciascun articolo, separati da virgole. Il quinto input è un elenco di quantità corrispondenti a ciascun articolo, separate da virgole. Crea una HashMap per memorizzare i dati dell'inventario, dove la chiave è il nome dell'articolo e il valore è una tupla contenente il prezzo e la quantità (f64, i32). Poi prova a vendere la quantità richiesta dell'articolo.
Requisiti:
- Importa
HashMapdastd::collections - Leggi il primo input (nome dell'articolo da vendere) e rimuovi gli spazi bianchi
- Leggi il secondo input (quantità da vendere) e rimuovi gli spazi bianchi
- Analizza la quantità da vendere come
i32 - Leggi il terzo input (nomi degli articoli separati da virgole) e rimuovi gli spazi bianchi
- Leggi il quarto input (prezzi separati da virgole) e rimuovi gli spazi bianchi
- Leggi il quinto input (quantità separate da virgole) e rimuovi gli spazi bianchi
- Crea una
HashMap<String, (f64, i32)>mutabile per l'inventario - Dividi i nomi degli articoli in base alle virgole
- Dividi i prezzi in base alle virgole e analizza ciascuno come
f64 - Dividi le quantità in base alle virgole e analizza ciascuna come
i32 - Inserisci ogni articolo nell'inventario con il prezzo e la quantità corrispondenti come tupla
- Usa
.get()per verificare se l'articolo richiesto è presente nell'inventario - Usa un'espressione
matchper gestireOption, restituito da.get() - Nel ramo
Some:- Estrai il prezzo e la quantità corrente dalla tupla
- Verifica se la quantità corrente è maggiore o uguale alla quantità da vendere
- Se sì:
- Calcola la nuova quantità sottraendo la quantità da vendere dalla quantità corrente
- Calcola il prezzo totale moltiplicando il prezzo dell'articolo per la quantità da vendere
- Usa
.insert()per aggiornare l'inventario con la nuova quantità - Stampa:
Sold [quantity_to_sell] [item_name] - Stampa:
Total: $[total_price] - Stampa:
Remaining stock: [new_quantity]
- Se no (scorte insufficienti):
- Stampa:
Insufficient stock for [item_name] - Stampa:
Available: [current_quantity]
- Stampa:
- Nel ramo
None, stampa:[item_name] is not in stock
Input:
- Prima riga: nome dell'articolo da vendere (ad esempio,
Mouse) - Seconda riga: quantità da vendere (ad esempio,
10) - Terza riga: nomi degli articoli separati da virgole (ad esempio,
Laptop,Mouse,Keyboard) - Quarta riga: prezzi separati da virgole (ad esempio,
999.99,25.50,75.00) - Quinta riga: quantità separate da virgole (ad esempio,
15,50,30)
Output:
- Se l'articolo esiste e ci sono scorte sufficienti:
- Prima riga:
Sold [quantity_to_sell] [item_name] - Seconda riga:
Total: $[total_price] - Terza riga:
Remaining stock: [new_quantity]
- Prima riga:
- Se l'articolo esiste ma le scorte sono insufficienti:
- Prima riga:
Insufficient stock for [item_name] - Seconda riga:
Available: [current_quantity]
- Prima riga:
- Se l'articolo non esiste:
[item_name] is not in stock
Provalo tu
use std::collections::HashMap;
use std::io;
fn main() {
// Leggi l'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: Scrivi il tuo codice qui sotto
// Crea una HashMap per memorizzare l'inventario
// Elabora gli input e costruisci l'inventario
// Controlla se l'articolo esiste e gestisci la vendita
}Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L'espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL'espressione 'if let'Cicli come espressioniRipasso - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi delle structStruct mutabiliStruct come parametri di funzioneStruct tuplaRiepilogo - Creare una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreIterare su un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker dei punteggi di base5Coppie chiave-valore con mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriScorrere una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: inventario semplice degli articoli
Configurazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere tutto insieme3Lista di attività da riga di comando
Configurazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finaleEsercitati da solo: Compilatore Rust online