Menu
Coddy logo textTech

Vendere un articolo

Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 52 di 66.

challenge icon

Sfida

Facile

Riceverai 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 HashMap da std::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 match per gestire Option, 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]
  • 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]
  • Se l'articolo esiste ma le scorte sono insufficienti:
    • Prima riga: Insufficient stock for [item_name]
    • Seconda riga: Available: [current_quantity]
  • 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

Esercitati da solo: Compilatore Rust online