Einen Artikel verkaufen
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 52 von 66.
Aufgabe
EinfachSie erhalten fünf Eingaben. Die erste Eingabe ist der Name des zu verkaufenden Artikels. Die zweite Eingabe ist die zu verkaufende Menge. Die dritte Eingabe ist eine durch Kommas getrennte Liste von Artikelnamen im Inventar. Die vierte Eingabe ist eine durch Kommas getrennte Liste von Preisen, die jedem Artikel entsprechen. Die fünfte Eingabe ist eine durch Kommas getrennte Liste von Mengen, die jedem Artikel entsprechen. Erstellen Sie eine HashMap, um die Inventardaten zu speichern, wobei der Schlüssel der Artikelname und der Wert ein Tupel ist, das den Preis und die Menge (f64, i32) enthält. Versuchen Sie dann, die angeforderte Menge des Artikels zu verkaufen.
Anforderungen:
- Importieren Sie
HashMapausstd::collections - Lesen Sie die erste Eingabe (Name des zu verkaufenden Artikels) und entfernen Sie Leerzeichen am Anfang und Ende
- Lesen Sie die zweite Eingabe (zu verkaufende Menge) und entfernen Sie Leerzeichen am Anfang und Ende
- Parsen Sie die zu verkaufende Menge zu
i32 - Lesen Sie die dritte Eingabe (kommagetrennte Artikelnamen) und entfernen Sie Leerzeichen am Anfang und Ende
- Lesen Sie die vierte Eingabe (kommagetrennte Preise) und entfernen Sie Leerzeichen am Anfang und Ende
- Lesen Sie die fünfte Eingabe (kommagetrennte Mengen) und entfernen Sie Leerzeichen am Anfang und Ende
- Erstellen Sie eine veränderliche
HashMap<String, (f64, i32)>für das Inventar - Teilen Sie die Artikelnamen anhand der Kommas auf
- Teilen Sie die Preise anhand der Kommas auf und parsen Sie jeden zu
f64 - Teilen Sie die Mengen anhand der Kommas auf und parsen Sie jede zu
i32 - Fügen Sie jeden Artikel mit seinem entsprechenden Preis und seiner Menge als Tupel in das Inventar ein
- Verwenden Sie
.get(), um zu prüfen, ob der angeforderte Artikel im Inventar vorhanden ist - Verwenden Sie einen
match-Ausdruck, um die von.get()zurückgegebeneOptionzu verarbeiten - Im
Some-Zweig:- Extrahieren Sie den Preis und die aktuelle Menge aus dem Tupel
- Prüfen Sie, ob die aktuelle Menge größer oder gleich der zu verkaufenden Menge ist
- Wenn ja:
- Berechnen Sie die neue Menge, indem Sie die zu verkaufende Menge von der aktuellen Menge subtrahieren
- Berechnen Sie den Gesamtpreis, indem Sie den Artikelpreis mit der zu verkaufenden Menge multiplizieren
- Verwenden Sie
.insert(), um das Inventar mit der neuen Menge zu aktualisieren - Geben Sie aus:
Sold [quantity_to_sell] [item_name] - Geben Sie aus:
Total: $[total_price] - Geben Sie aus:
Remaining stock: [new_quantity]
- Wenn nein (unzureichender Lagerbestand):
- Geben Sie aus:
Insufficient stock for [item_name] - Geben Sie aus:
Available: [current_quantity]
- Geben Sie aus:
- Im
None-Zweig geben Sie aus:[item_name] is not in stock
Eingabe:
- Erste Zeile: Name des zu verkaufenden Artikels (z. B.
Mouse) - Zweite Zeile: Zu verkaufende Menge (z. B.
10) - Dritte Zeile: Kommagetrennte Artikelnamen (z. B.
Laptop,Mouse,Keyboard) - Vierte Zeile: Kommagetrennte Preise (z. B.
999.99,25.50,75.00) - Fünfte Zeile: Kommagetrennte Mengen (z. B.
15,50,30)
Ausgabe:
- Wenn der Artikel existiert und ausreichend Lagerbestand vorhanden ist:
- Erste Zeile:
Sold [quantity_to_sell] [item_name] - Zweite Zeile:
Total: $[total_price] - Dritte Zeile:
Remaining stock: [new_quantity]
- Erste Zeile:
- Wenn der Artikel existiert, aber der Lagerbestand unzureichend ist:
- Erste Zeile:
Insufficient stock for [item_name] - Zweite Zeile:
Available: [current_quantity]
- Erste Zeile:
- Wenn der Artikel nicht existiert:
[item_name] is not in stock
Probier es selbst
use std::collections::HashMap;
use std::io;
fn main() {
// Eingabe lesen
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: Schreiben Sie Ihren Code unten
// Erstellen Sie eine HashMap, um das Inventar zu speichern
// Verarbeiten Sie die Eingaben und bauen Sie das Inventar auf
// Prüfen Sie, ob der Artikel existiert, und wickeln Sie den Verkauf ab
}Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code