Menu
Coddy logo textTech

Ajouter une tâche

Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 21 sur 68.

challenge icon

Défi

Facile

En vous appuyant sur les bases de votre système de gestion des tâches, vous allez maintenant implémenter la fonctionnalité principale permettant d’ajouter de nouvelles tâches à votre système. Ce défi se concentre sur la création d’une fonction qui étend votre liste de tâches en ajoutant de nouvelles tâches à la tranche existante.

Remarque importante : Comme les noms de tâches peuvent contenir des espaces (comme « Acheter des courses »), vous devrez utiliser bufio.Scanner pour lire des lignes d’entrée entières. La fonction fmt.Scanln arrête la lecture au premier espace, ce qui interromprait les noms de tâches contenant des espaces. Utilisez bufio.NewScanner(os.Stdin) et appelez scanner.Scan(), puis scanner.Text() pour lire des lignes complètes.

Vous recevrez deux entrées :

  • Une chaîne représentant le nombre de tâches existantes (par exemple, "2")
  • Une chaîne contenant les noms des tâches séparés par des virgules (par exemple, "Buy groceries,Call dentist,Finish project")

Votre tâche consiste à :

  1. Définir la même structure Task que lors du défi précédent, avec les champs Name (string) et Completed (bool)
  2. Créer une fonction appelée addTask qui prend en paramètres une tranche de structures Task et un nom de tâche (string)
  3. La fonction addTask doit renvoyer une nouvelle tranche contenant la tâche ajoutée (la nouvelle tâche doit avoir Completed défini sur false)
  4. Utiliser bufio.Scanner pour lire correctement les lignes d’entrée afin de gérer les noms de tâches contenant des espaces
  5. Créer une tranche initiale de tâches en fonction du nombre de tâches existantes indiqué dans la première entrée :
    • Si le nombre est "0", commencer par une tranche vide
    • Si le nombre est supérieur à "0", créer autant de tâches fictives, avec des noms comme "Existing Task 1", "Existing Task 2", etc., toutes marquées comme incomplètes
  6. Analyser les noms de tâches séparés par des virgules dans la deuxième entrée
  7. Utiliser votre fonction addTask pour ajouter chaque nouvelle tâche à la tranche
  8. Afficher chaque tâche de la tranche finale au format : "Task: [name], Completed: [true/false]"
  9. Afficher le nombre total de tâches au format : "Total tasks: [count]"

Par exemple, si vous avez 1 tâche existante et que vous souhaitez ajouter "Buy groceries,Call dentist", votre sortie doit afficher d’abord la tâche existante, suivie des deux nouvelles tâches, puis le nombre total. Ce défi vous permet de vous exercer à manipuler des tranches avec la fonction append et montre comment créer une fonctionnalité qui étend vos structures de données.

Essayez vous-même

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

type Task struct {
	Name      string
	Completed bool
}

// TODO : Créer la fonction addTask ici

func main() {
	// Créer un scanner pour lire les lignes d'entrée
	scanner := bufio.NewScanner(os.Stdin)
	
	// Lire le nombre de tâches existantes
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// Lire les noms des tâches
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO : Compléter l'implémentation
	// 1. Convertir existingTasksStr en entier
	// 2. Créer une tranche (slice) initiale avec les tâches existantes
	// 3. Analyser taskNamesStr et ajouter de nouvelles tâches
	// 4. Afficher toutes les tâches et le nombre total
}

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Go en ligne