Menu
Coddy logo textTech

Wyświetlanie wszystkich zadań

Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 22 z 68.

challenge icon

Wyzwanie

Łatwy

Kontynuując pracę nad systemem zarządzania zadaniami, zaimplementujesz teraz funkcjonalność wyświetlania wszystkich zadań w czytelnej formie. To wyzwanie skupia się na iterowaniu po kolekcji zadań i prezentowaniu każdego zadania wraz z informacją o jego ukończeniu, z użyciem wyraźnych oznaczeń wizualnych.

Otrzymasz dwa dane wejściowe:

  • Ciag znaków reprezentujący liczbę zadań (np. "4")
  • Ciąg znaków zawierający dane zadań w formacie: "name1:status1,name2:status2,name3:status3", gdzie status to "true" lub "false" (np. "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Twoje zadanie:

  1. Zdefiniuj tę samą strukturę Task co w poprzednich wyzwaniach, z polami Name (string) i Completed (bool)
  2. Utwórz funkcję o nazwie viewAllTasks, która przyjmuje jako parametr wycinek struktur Task
  3. Wewnątrz funkcji viewAllTasks iteruj po wycinku i wypisz każde zadanie w następującym formacie:
    • W przypadku ukończonych zadań: "[x] [task_name]"
    • W przypadku nieukończonych zadań: "[ ] [task_name]"
  4. Przeanalizuj dane zadań z drugiego wejścia, aby utworzyć wycinek zadań:
    • Podziel dane wejściowe po przecinkach, aby uzyskać poszczególne wpisy zadań
    • Dla każdego wpisu podziel go po dwukropku, aby oddzielić nazwę od statusu
    • Przekształć ciąg znaków statusu na wartość logiczną ("true" daje true, a "false" daje false)
  5. Wywołaj funkcję viewAllTasks z utworzonym wycinkiem
  6. Po wyświetleniu wszystkich zadań wypisz podsumowanie w formacie: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

Na przykład, jeśli masz zadania "Buy groceries:false,Call dentist:true,Finish project:false", dane wyjściowe powinny pokazywać każde zadanie z odpowiednim polem wyboru, a następnie podsumowanie z łączną liczbą zadań i statystykami ukończenia. To wyzwanie pozwala ćwiczyć iterowanie po wycinku, formatowanie warunkowe za pomocą instrukcji if oraz prezentuje użytkownikom przejrzysty obraz postępów w realizacji zadań.

Spróbuj swoich sił

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO: Zaimplementuj funkcję wyświetlającą wszystkie zadania
	// Dla ukończonych zadań: "[x] [task_name]"
	// Dla nieukończonych zadań: "[ ] [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: Przeanalizuj dane zadań z ciągu znaków taskData
	// Podziel według przecinków, aby uzyskać poszczególne wpisy zadań
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// Każdy wpis podziel według dwukropka, aby oddzielić nazwę od statusu
	// Przekonwertuj ciąg znaków statusu na wartość logiczną i utwórz struktury Task

	// TODO: Wywołaj funkcję viewAllTasks z utworzonym wycinkiem

	// TODO: Oblicz i wypisz podsumowanie
	// Format: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online