Finaler Code
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 19 von 66.
Aufgabe
EinfachSie erhalten vier Eingaben, die einen vollständigen To-Do-Listen-Workflow darstellen: erstens eine durch Kommas getrennte Liste von Anfangsaufgaben; zweitens eine neue Aufgabe, die hinzugefügt werden soll; drittens eine Aufgabennummer zum Anzeigen (1-basierte Indizierung); und viertens eine Aufgabennummer zum Entfernen (1-basierte Indizierung). Erstellen Sie einen vollständigen To-Do-Listen-Manager, der all diese Operationen verarbeitet und den Endzustand anzeigt.
Anforderungen:
- Lesen Sie die erste Eingabe ein, die durch Kommas getrennte Aufgabenbeschreibungen enthält (z. B.
Buy groceries,Call dentist,Finish homework) - Teilen Sie die Zeichenfolge nach Kommas auf und erstellen Sie einen veränderbaren Vektor (mutable vector) mit diesen Anfangsaufgaben
- Lesen Sie die zweite Eingabe ein und fügen Sie diese neue Aufgabe mit
.push()zum Vektor hinzu - Lesen Sie die dritte Eingabe ein und konvertieren Sie sie in eine Ganzzahl (1-basierte Aufgabennummer zum Anzeigen)
- Lesen Sie die vierte Eingabe ein und konvertieren Sie sie in eine Ganzzahl (1-basierte Aufgabennummer zum Entfernen)
- Entfernen Sie die angegebene Aufgabe, indem Sie den 1-basierten Index in einen 0-basierten Index umwandeln und
.remove()verwenden - Geben Sie
Total tasks: Xaus, wobei X die endgültige Anzahl der Aufgaben ist - Geben Sie
Viewing task: Yaus, wobei Y die Aufgabennummer ist, die zur Anzeige angefordert wurde - Iterieren Sie durch die endgültige Aufgabenliste und geben Sie jede Aufgabe mit ihrer Nummer (1-basiert) aus
- Für die Aufgabe, die mit der Anzeigenummer übereinstimmt (nach den Anpassungen durch das Entfernen), geben Sie Folgendes aus:
[X] [task description] (selected) - Für alle anderen Aufgaben geben Sie Folgendes aus:
[X] [task description]
Eingabe:
- Erste Zeile: Durch Kommas getrennte Aufgabenbeschreibungen (z. B.
Buy groceries,Call dentist,Finish homework) - Zweite Zeile: Eine neue Aufgabe, die hinzugefügt werden soll (z. B.
Study for exam) - Dritte Zeile: Eine Ganzzahl, die die anzuzeigende Aufgabennummer darstellt (1-basierte Indizierung)
- Vierte Zeile: Eine Ganzzahl, die die zu entfernende Aufgabennummer darstellt (1-basierte Indizierung)
Ausgabe:
- Erste Zeile:
Total tasks: Xwobei X die endgültige Anzahl der Aufgaben ist - Zweite Zeile:
Viewing task: Ywobei Y die angeforderte Anzeigenummer ist - Folgende Zeilen: Jede Aufgabe mit ihrer Nummer im Format
[X] [task description] - Die ausgewählte Aufgabe (die mit der Anzeigenummer übereinstimmt) sollte den Anhang
(selected)haben
Probier es selbst
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Lies die anfänglichen, durch Kommas getrennten Aufgaben
let initial_tasks = lines.next().unwrap().unwrap();
// Lies die neue Aufgabe, die hinzugefügt werden soll
let new_task = lines.next().unwrap().unwrap();
// Lies die Nummer der anzuzeigenden Aufgabe (1-basiert)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Lies die Nummer der zu entfernenden Aufgabe (1-basiert)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Schreibe deinen Code unten
// 1. Teile initial_tasks nach Kommas auf und erstelle einen veränderbaren Vektor
// 2. Füge new_task zum Vektor hinzu
// 3. Entferne die Aufgabe bei remove_number (konvertiere in 0-basierten Index)
// 4. Gib die Gesamtzahl der Aufgaben und die Informationen zur anzuzeigenden Aufgabe aus
// 5. Iteriere durch die endgültige Liste und gib jede Aufgabe aus
}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