Vendre un article
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 52 sur 66.
Défi
FacileVous 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
HashMapdepuisstd::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
matchpour gérer l'Optionrenvoyé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]
- Affichez :
- 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]
- Première ligne :
- Si l'article existe mais que le stock est insuffisant :
- Première ligne :
Insufficient stock for [item_name] - Deuxième ligne :
Available: [current_quantity]
- Première ligne :
- 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
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final