Menu
Coddy logo textTech

Das Tool fertigstellen

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 22 von 56.

challenge icon

Aufgabe

Einfach

Vervollständige dein Tool für Aufgabenlisten, indem du die Hauptprogrammschleife implementierst, die alle Funktionen miteinander verbindet. Diese abschließende Lektion erstellt eine vollständig funktionsfähige Aufgabenverwaltungsanwendung, die das Menü wiederholt anzeigt und Benutzerbefehle verarbeitet, bis der Benutzer das Programm beendet.

Die folgenden Eingaben werden bereitgestellt:

  • Eine Reihe von Menüauswahlen (Ganzzahlen: 1 für Aufgabe hinzufügen, 2 für Aufgaben anzeigen, 3 für Aufgabe entfernen, 4 für Beenden)
  • Für Aufgabe hinzufügen (Auswahl 1): eine Zeichenkette, die die Aufgabenbeschreibung darstellt
  • Für Aufgabe entfernen (Auswahl 3): eine Ganzzahl, die die zu entfernende Aufgabennummer darstellt (1-basierte Indizierung)

Dein Programm sollte:

  1. Mit derselben Einrichtung wie in den vorherigen Lektionen starten (leerer std::vector<std::string> namens tasks und Begrüßungsnachricht)
  2. Eine Hauptschleife erstellen, die fortgesetzt wird, bis der Benutzer das Programm beendet
  3. Das Menü anzeigen und die Auswahl des Benutzers für jede Iteration einlesen
  4. Jede Menüoption verarbeiten:
    • Auswahl 1: Eine Aufgabenbeschreibung einlesen und sie mit push_back() hinzufügen
    • Auswahl 2: Alle Aufgaben nummeriert anzeigen oder bei einer leeren Liste „No tasks available.“ ausgeben
    • Auswahl 3: Eine Aufgabennummer einlesen, sie validieren und die Aufgabe mit .erase() entfernen
    • Auswahl 4: Die Programmschleife verlassen
  5. Bei ungültigen Menüauswahlen eine Fehlermeldung anzeigen und die Schleife fortsetzen
  6. Beim Beenden des Programms eine Abschiedsnachricht ausgeben

Verwende das folgende exakte Ausgabeformat:

Anfangseinrichtung und Menüanzeige:

Welcome to Task List Tool!

Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit

Task list system initialized and ready!

Für jede Menüiteration anzeigen:

Choose an option: 

Für Aufgabe hinzufügen (Auswahl 1):

Task "[task description]" added successfully!
Total tasks: [number of tasks]

Für Aufgaben anzeigen (Auswahl 2) mit vorhandenen Aufgaben:

Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]

Für Aufgaben anzeigen (Auswahl 2) bei einer leeren Liste:

No tasks available.

Für Aufgabe entfernen (Auswahl 3) mit gültiger Aufgabennummer:

Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]

Für Aufgabe entfernen (Auswahl 3) mit ungültiger Aufgabennummer:

Error: Invalid task number. Please enter a number between 1 and [total tasks].

Für eine ungültige Menüauswahl:

Invalid choice. Please try again.

Wenn der Benutzer das Programm beendet (Auswahl 4):

Thank you for using Task List Tool!

Verwende eine while-Schleife, die fortgesetzt wird, bis der Benutzer 4 eingibt. Denke bei der Funktion zum Entfernen von Aufgaben daran, zu validieren, dass die Aufgabennummer zwischen 1 und tasks.size() liegt, bevor du tasks.erase(tasks.begin() + index) verwendest. Wenn die Liste nach dem Entfernen leer ist, gib „No tasks remaining.“ anstelle der Liste der verbleibenden Aufgaben aus.

Probier es selbst

#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> tasks;
    
    std::cout << "Welcome to Task List Tool!" << std::endl;
    std::cout << std::endl;
    std::cout << "Menu Options:" << std::endl;
    std::cout << "1. Add Task" << std::endl;
    std::cout << "2. View Tasks" << std::endl;
    std::cout << "3. Quit" << std::endl;
    std::cout << std::endl;
    std::cout << "Task list system initialized and ready!" << std::endl;
    
    int n;
    std::cin >> n;
    std::cin.ignore();
    
    for (int i = 0; i < n; i++) {
        std::string task;
        std::getline(std::cin, task);
        tasks.push_back(task);
    }
    
    int taskNumber;
    std::cin >> taskNumber;
    
    if (taskNumber < 1 || taskNumber > tasks.size()) {
        std::cout << "Error: Invalid task number. Please enter a number between 1 and " << tasks.size() << "." << std::endl;
    } else {
        std::string removedTask = tasks[taskNumber - 1];
        tasks.erase(tasks.begin() + (taskNumber - 1));
        
        std::cout << "Task \"" << removedTask << "\" removed successfully!" << std::endl;
        
        if (tasks.empty()) {
            std::cout << "No tasks remaining." << std::endl;
        } else {
            std::cout << "Remaining Tasks:" << std::endl;
            for (int i = 0; i < tasks.size(); i++) {
                std::cout << (i + 1) << ". " << tasks[i] << std::endl;
            }
        }
        
        std::cout << "Total tasks: " << tasks.size() << std::endl;
    }
    
    return 0;
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C++-Compiler