Menu
Coddy logo textTech

Dodawanie zadania

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

challenge icon

Wyzwanie

Łatwy

Rozwijając podstawy zarządzania zadaniami, zaimplementujesz teraz podstawową funkcjonalność dodawania nowych zadań do swojego systemu. To wyzwanie koncentruje się na utworzeniu funkcji, która rozszerza listę zadań przez dołączanie nowych zadań do istniejącej wycinkowej tablicy.

Ważna uwaga: Ponieważ nazwy zadań mogą zawierać spacje (np. "Buy groceries"), musisz użyć bufio.Scanner, aby odczytywać całe wiersze wejścia. Funkcja fmt.Scanln przestaje czytać przy pierwszej spacji, co powodowałoby problemy z nazwami zadań zawierającymi spacje. Użyj bufio.NewScanner(os.Stdin) i wywołaj scanner.Scan(), a następnie scanner.Text(), aby odczytać całe wiersze.

Otrzymasz dwa dane wejściowe:

  • Ciąg znaków reprezentujący liczbę istniejących zadań (np. "2")
  • Ciąg znaków zawierający nazwy zadań oddzielone przecinkami (np. "Buy groceries,Call dentist,Finish project")

Twoim zadaniem jest:

  1. Zdefiniować tę samą strukturę Task co w poprzednim wyzwaniu, z polami Name (string) i Completed (bool)
  2. Utworzyć funkcję o nazwie addTask, która przyjmuje jako parametry wycinek struktur Task oraz nazwę zadania (string)
  3. Funkcja addTask powinna zwracać nowy wycinek z dodanym zadaniem (dla nowego zadania pole Completed powinno mieć wartość false)
  4. Użyć bufio.Scanner do prawidłowego odczytywania wierszy wejścia, aby obsłużyć nazwy zadań zawierające spacje
  5. Utworzyć początkowy wycinek zadań na podstawie liczby istniejących zadań podanej w pierwszym wejściu:
    • Jeśli liczba wynosi "0", rozpocząć od pustego wycinka
    • Jeśli liczba jest większa niż "0", utworzyć tyle zadań zastępczych o nazwach takich jak "Existing Task 1", "Existing Task 2" itd., wszystkie oznaczone jako nieukończone
  6. Odczytać rozdzielone przecinkami nazwy zadań z drugiego wejścia
  7. Użyć funkcji addTask, aby dodać każde nowe zadanie do wycinka
  8. Wypisać każde zadanie z końcowego wycinka w formacie: "Task: [name], Completed: [true/false]"
  9. Wypisać łączną liczbę zadań w formacie: "Total tasks: [count]"

Na przykład, jeśli masz 1 istniejące zadanie i chcesz dodać "Buy groceries,Call dentist", wynik powinien najpierw wyświetlać istniejące zadanie, a następnie dwa nowe zadania, a na końcu łączną liczbę. To wyzwanie ćwiczy manipulowanie wycinkami za pomocą funkcji append i pokazuje, jak tworzyć funkcjonalność rozszerzającą struktury danych.

Spróbuj swoich sił

package main

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

type Task struct {
	Name      string
	Completed bool
}

// TODO: Utwórz tutaj funkcję addTask

func main() {
	// Utwórz scanner do odczytywania wierszy wejściowych
	scanner := bufio.NewScanner(os.Stdin)
	
	// Odczytaj liczbę istniejących zadań
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// Odczytaj nazwy zadań
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: Dokończ implementację
	// 1. Przekonwertuj existingTasksStr na liczbę całkowitą
	// 2. Utwórz początkowy wycinek zawierający istniejące zadania
	// 3. Przeanalizuj taskNamesStr i dodaj nowe zadania
	// 4. Wypisz wszystkie zadania i ich łączną liczbę
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online