Menu
Coddy logo textTech

Afficher toutes les tâches

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

challenge icon

Défi

Facile

En poursuivant avec votre système de gestion des tâches, vous allez maintenant implémenter la fonctionnalité permettant d’afficher toutes les tâches dans un format convivial. Ce défi se concentre sur l’itération à travers votre collection de tâches et la présentation de chaque tâche avec son état d’achèvement à l’aide d’indicateurs visuels clairs.

Vous recevrez deux entrées :

  • Une chaîne représentant le nombre de tâches (par exemple, "4")
  • Une chaîne contenant les données des tâches au format : "name1:status1,name2:status2,name3:status3", où l’état est soit "true", soit "false" (par exemple, "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Votre tâche consiste à :

  1. Définir la même structure Task que dans les défis précédents, avec les champs Name (string) et Completed (bool)
  2. Créer une fonction appelée viewAllTasks qui prend une tranche de structures Task comme paramètre
  3. À l’intérieur de la fonction viewAllTasks, parcourir la tranche et afficher chaque tâche au format suivant :
    • Pour les tâches terminées : "[x] [task_name]"
    • Pour les tâches non terminées : "[ ] [task_name]"
  4. Analyser les données des tâches de la deuxième entrée pour créer votre tranche de tâches :
    • Séparer l’entrée par des virgules pour obtenir les entrées de tâches individuelles
    • Pour chaque entrée, la séparer au niveau des deux-points afin de distinguer le nom et l’état
    • Convertir la chaîne représentant l’état en valeur booléenne ("true" devient true, "false" devient false)
  5. Appeler votre fonction viewAllTasks avec la tranche créée
  6. Après avoir affiché toutes les tâches, afficher un résumé au format : "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

Par exemple, si vous avez les tâches "Buy groceries:false,Call dentist:true,Finish project:false", votre sortie doit afficher chaque tâche avec les cases appropriées, puis afficher le résumé avec le nombre total et les statistiques d’achèvement. Ce défi permet de s’exercer à l’itération sur une tranche, au formatage conditionnel avec des instructions if, et fournit aux utilisateurs une vue claire de la progression de leurs tâches.

Essayez vous-même

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO : Implémenter la fonction pour afficher toutes les tâches
	// Pour les tâches terminées : "[x] [task_name]"
	// Pour les tâches incomplètes : "[ ] [task_name]"
}

func main() {
	var numTasksStr string
	fmt.Scanln(&numTasksStr)
	numTasks, _ := strconv.Atoi(numTasksStr)

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	taskData := scanner.Text()

	var tasks []Task

	// TODO : Analyser les données de tâche à partir de la chaîne taskData
	// Diviser par des virgules pour obtenir les entrées de tâches individuelles
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// Pour chaque entrée, diviser par deux-points pour séparer le nom et le statut
	// Convertir la chaîne de statut en booléen et créer des structures Task

	// TODO : Appeler la fonction viewAllTasks avec la tranche créée

	// TODO : Calculer et afficher le résumé
	// Format : "Total : [total_count] tâches ([completed_count] terminées, [incomplete_count] restantes)"
	_ = tasks
	_ = numTasks
}

Toutes les leçons de Logique & Flux

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