Menu
Coddy logo textTech

Vendre un article

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 52 sur 66.

challenge icon

Défi

Facile

Vous recevrez cinq entrées. La première entrée est le nom de l'article à vendre. La deuxième entrée est la quantité à vendre. La troisième entrée est une liste de noms d'articles dans l'inventaire, séparés par des virgules. La quatrième entrée est une liste de prix correspondant à chaque article, séparés par des virgules. La cinquième entrée est une liste de quantités correspondant à chaque article, séparées par des virgules. Construisez une HashMap pour stocker les données de l'inventaire où la clé est le nom de l'article et la valeur est un tuple contenant le prix et la quantité (f64, i32). Ensuite, tentez de vendre la quantité demandée de l'article.

Exigences :

  • Importez HashMap depuis std::collections
  • Lisez la première entrée (nom de l'article à vendre) et supprimez les espaces blancs
  • Lisez la deuxième entrée (quantité à vendre) et supprimez les espaces blancs
  • Analysez la quantité à vendre en i32
  • Lisez la troisième entrée (noms d'articles séparés par des virgules) et supprimez les espaces blancs
  • Lisez la quatrième entrée (prix séparés par des virgules) et supprimez les espaces blancs
  • Lisez la cinquième entrée (quantités séparées par des virgules) et supprimez les espaces blancs
  • Créez une HashMap<String, (f64, i32)> mutable pour l'inventaire
  • Séparez les noms d'articles par des virgules
  • Séparez les prix par des virgules et analysez chacun en f64
  • Séparez les quantités par des virgules et analysez chacune en i32
  • Insérez chaque article dans l'inventaire avec son prix et sa quantité correspondants sous forme de tuple
  • Utilisez .get() pour vérifier si l'article demandé existe dans l'inventaire
  • Utilisez une expression match pour gérer l'Option renvoyée par .get()
  • Dans la branche Some :
    • Extrayez le prix et la quantité actuelle du tuple
    • Vérifiez si la quantité actuelle est supérieure ou égale à la quantité à vendre
    • Si oui :
      • Calculez la nouvelle quantité en soustrayant la quantité à vendre de la quantité actuelle
      • Calculez le prix total en multipliant le prix de l'article par la quantité à vendre
      • Utilisez .insert() pour mettre à jour l'inventaire avec la nouvelle quantité
      • Affichez : Sold [quantity_to_sell] [item_name]
      • Affichez : Total: $[total_price]
      • Affichez : Remaining stock: [new_quantity]
    • Si non (stock insuffisant) :
      • Affichez : Insufficient stock for [item_name]
      • Affichez : Available: [current_quantity]
  • Dans la branche None, affichez : [item_name] is not in stock

Entrée :

  • Première ligne : Nom de l'article à vendre (par ex., Mouse)
  • Deuxième ligne : Quantité à vendre (par ex., 10)
  • Troisième ligne : Noms d'articles séparés par des virgules (par ex., Laptop,Mouse,Keyboard)
  • Quatrième ligne : Prix séparés par des virgules (par ex., 999.99,25.50,75.00)
  • Cinquième ligne : Quantités séparées par des virgules (par ex., 15,50,30)

Sortie :

  • Si l'article existe et que le stock est suffisant :
    • Première ligne : Sold [quantity_to_sell] [item_name]
    • Deuxième ligne : Total: $[total_price]
    • Troisième ligne : Remaining stock: [new_quantity]
  • Si l'article existe mais que le stock est insuffisant :
    • Première ligne : Insufficient stock for [item_name]
    • Deuxième ligne : Available: [current_quantity]
  • Si l'article n'existe pas : [item_name] is not in stock

Essayez vous-même

use std::collections::HashMap;
use std::io;

fn main() {
    // Lire l'entrée
    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 : Écrivez votre code ci-dessous
    // Créer une HashMap pour stocker l'inventaire
    // Traiter les entrées et construire l'inventaire
    // Vérifier si l'article existe et gérer la vente
    
}

Toutes les leçons de Logic & Flow