Menu
Coddy logo textTech

Tüm Görevleri Görüntüleme

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 22 / 68.

challenge icon

Görev

Kolay

Görev yönetim sisteminize devam ederek, şimdi tüm görevleri kullanıcı dostu bir formatta görüntüleme işlevini uygulayacaksınız. Bu zorluk, görev koleksiyonunuzda gezinmeye ve her bir görevi net görsel göstergeler kullanarak tamamlanma durumuyla birlikte sunmaya odaklanmaktadır.

İki girdi alacaksınız:

  • Görev sayısını temsil eden bir dize (örneğin, "4")
  • Şu formatta görev verilerini içeren bir dize: "name1:status1,name2:status2,name3:status3"; burada durum "true" veya "false" değerlerinden biridir (örneğin, "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Göreviniz şunları yapmaktır:

  1. Önceki zorluklardakiyle aynı, Name (string) ve Completed (bool) alanlarına sahip Task yapısını (struct) tanımlayın
  2. Parametre olarak bir Task yapısı dilimi (slice) alan viewAllTasks adında bir fonksiyon oluşturun
  3. viewAllTasks fonksiyonu içinde, dilim üzerinde gezinin ve her görevi aşağıdaki formatta yazdırın:
    • Tamamlanmış görevler için: "[x] [task_name]"
    • Tamamlanmamış görevler için: "[ ] [task_name]"
  4. Görev diliminizi oluşturmak için ikinci girdideki görev verilerini ayrıştırın:
    • Bireysel görev girişlerini elde etmek için girdiyi virgüllere göre bölün
    • Her giriş için, isim ve durumu ayırmak üzere iki noktaya göre bölün
    • Durum dizesini bir boolean değerine dönüştürün ("true" değeri true, "false" değeri false olur)
  5. Oluşturulan dilim ile viewAllTasks fonksiyonunuzu çağırın
  6. Tüm görevleri görüntüledikten sonra, şu formatta bir özet yazdırın: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

Örneğin, "Buy groceries:false,Call dentist:true,Finish project:false" görevlerine sahipseniz, çıktınız her görevi uygun onay kutularıyla göstermeli ve ardından toplam sayı ve tamamlanma istatistiklerini içeren özeti görüntülemelidir. Bu zorluk, dilim yineleme (slice iteration), if ifadeleriyle koşullu biçimlendirme alıştırması yapar ve kullanıcılara görev ilerlemelerinin net bir görünümünü sunar.

Kendin dene

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// YAPILACAK: Tüm görevleri görüntülemek için fonksiyonu gerçekleştirin
	// Tamamlanan görevler için: "[x] [task_name]"
	// Tamamlanmamış görevler için: "[ ] [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

	// YAPILACAK: taskData dizesinden görev verilerini ayrıştırın
	// Bireysel görev girişlerini elde etmek için virgüllere göre bölün
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// Her giriş için, isim ve durumu ayırmak üzere iki noktaya göre bölün
	// Durum dizesini boolean'a dönüştürün ve Task yapılarını oluşturun

	// YAPILACAK: Oluşturulan dilim ile viewAllTasks fonksiyonunu çağırın

	// YAPILACAK: Özeti hesaplayın ve yazdırın
	// Biçim: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

Mantık ve Akış bölümündeki tüm dersler