Menu
Coddy logo textTech

Finaler Code

Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 19 von 66.

challenge icon

Aufgabe

Einfach

Du erhältst vier Eingaben, die einen vollständigen Workflow für eine To-do-Liste darstellen: zuerst eine durch Kommas getrennte Liste anfänglicher Aufgaben; zweitens eine neue hinzuzufügende Aufgabe; drittens eine anzuzeigende Aufgabennummer (1-basierte Indizierung); und viertens eine zu entfernende Aufgabennummer (1-basierte Indizierung). Erstelle einen vollständigen To-do-Listen-Manager, der alle diese Vorgänge verarbeitet und den endgültigen Zustand anzeigt.

Anforderungen:

  • Lies die erste Eingabe mit durch Kommas getrennten Aufgabenbeschreibungen (z. B. Buy groceries,Call dentist,Finish homework)
  • Teile die Zeichenkette an den Kommas auf und erstelle einen veränderbaren Vektor mit diesen anfänglichen Aufgaben
  • Lies die zweite Eingabe und füge diese neue Aufgabe mithilfe von .push() zum Vektor hinzu
  • Lies die dritte Eingabe und wandle sie in eine Ganzzahl um (1-basierte Aufgabennummer, die angezeigt werden soll)
  • Lies die vierte Eingabe und wandle sie in eine Ganzzahl um (1-basierte Aufgabennummer, die entfernt werden soll)
  • Entferne die angegebene Aufgabe, indem du den 1-basierten Index in einen 0-basierten umwandelst und .remove() verwendest
  • Gib Total tasks: X aus, wobei X die endgültige Anzahl der Aufgaben ist
  • Gib Viewing task: Y aus, wobei Y die angeforderte Aufgabennummer ist
  • Durchlaufe die endgültige Aufgabenliste und gib jede Aufgabe mit ihrer Nummer (1-basiert) aus
  • Gib für die Aufgabe, die der Anzeigenummer entspricht (nach den Anpassungen durch das Entfernen), Folgendes aus: [X] [task description] (selected)
  • Gib für alle anderen Aufgaben Folgendes aus: [X] [task description]

Eingabe:

  • Erste Zeile: Durch Kommas getrennte Aufgabenbeschreibungen (z. B. Buy groceries,Call dentist,Finish homework)
  • Zweite Zeile: Eine hinzuzufügende neue Aufgabe (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: X, wobei X die endgültige Anzahl der Aufgaben ist
  • Zweite Zeile: Viewing task: Y, wobei Y die angeforderte Anzeigenummer ist
  • Folgende Zeilen: Jede Aufgabe mit ihrer Nummer im Format [X] [task description]
  • An die ausgewählte Aufgabe (die der Anzeigenummer entspricht) sollte (selected) angehängt werden

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 Logik & Kontrollfluss

Übe selbstständig: Online-Rust-Compiler