Finaliser l'outil
Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 22 sur 56.
Défi
FacileTerminez votre outil de liste de tâches en implémentant la boucle principale du programme qui relie toutes les fonctionnalités. Cette dernière leçon crée une application de gestion des tâches entièrement fonctionnelle qui affiche le menu à plusieurs reprises et traite les commandes de l’utilisateur jusqu’à ce qu’il choisisse de quitter.
Les entrées suivantes seront fournies :
- Une série de choix de menu (entiers : 1 pour ajouter une tâche, 2 pour afficher les tâches, 3 pour supprimer une tâche, 4 pour quitter)
- Pour l’ajout d’une tâche (choix 1) : une chaîne représentant la description de la tâche
- Pour la suppression d’une tâche (choix 3) : un entier représentant le numéro de la tâche à supprimer (indexation commençant à 1)
Votre programme doit :
- Commencer avec la même configuration que dans les leçons précédentes (
std::vector<std::string>vide nommétaskset message de bienvenue) - Créer une boucle principale qui continue jusqu’à ce que l’utilisateur choisisse de quitter
- Afficher le menu et lire le choix de l’utilisateur à chaque itération
- Traiter chaque option du menu :
- Choix 1 : Lire une description de tâche et l’ajouter à l’aide de
push_back() - Choix 2 : Afficher toutes les tâches dans un format numéroté, ou afficher "No tasks available." si la liste est vide
- Choix 3 : Lire un numéro de tâche, le valider et supprimer la tâche à l’aide de
.erase() - Choix 4 : Quitter la boucle du programme
- Choix 1 : Lire une description de tâche et l’ajouter à l’aide de
- Pour les choix de menu invalides, afficher un message d’erreur et continuer la boucle
- Afficher un message d’au revoir lorsque l’utilisateur quitte
Utilisez le format de sortie exact suivant :
Configuration initiale et affichage du menu :
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit
Task list system initialized and ready!À chaque itération du menu, affichez :
Choose an option: Pour l’ajout d’une tâche (choix 1) :
Task "[task description]" added successfully!
Total tasks: [number of tasks]Pour l’affichage des tâches (choix 2) lorsqu’il y a des tâches :
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]Pour l’affichage des tâches (choix 2) lorsque la liste est vide :
No tasks available.Pour la suppression d’une tâche (choix 3) avec un numéro de tâche valide :
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]Pour la suppression d’une tâche (choix 3) avec un numéro de tâche invalide :
Error: Invalid task number. Please enter a number between 1 and [total tasks].Pour un choix de menu invalide :
Invalid choice. Please try again.Lorsque l’utilisateur quitte (choix 4) :
Thank you for using Task List Tool!Utilisez une boucle while qui continue jusqu’à ce que l’utilisateur saisisse 4. Pour la fonctionnalité de suppression d’une tâche, pensez à vérifier que le numéro de tâche est compris entre 1 et tasks.size() avant d’utiliser tasks.erase(tasks.begin() + index). Si la liste devient vide après la suppression, affichez "No tasks remaining." au lieu de la liste des tâches restantes.
Essayez vous-même
#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;
}Toutes les leçons de Logique et Flux
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâcheEntraînez-vous par vous-même : Compilateur C++ en ligne