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 sisteminizle devam ederek, şimdi tüm görevleri kullanıcı dostu bir biçimde görüntüleme işlevini uygulayacaksınız. Bu alıştırma, görev koleksiyonunuzda yineleme yapmaya ve her görevi tamamlanma durumunu net görsel göstergeler kullanarak sunmaya odaklanır.

İki girdi alacaksınız:

  • Görevlerin sayısını temsil eden bir dize (ör. "4")
  • Görev verilerini şu biçimde içeren bir dize: "name1:status1,name2:status2,name3:status3"; burada durum ya "true" ya da "false" olur (ör. "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Göreviniz:

  1. Önceki alıştırmalardaki aynı Task struct'ını, Name (string) ve Completed (bool) alanlarıyla tanımlayın
  2. Parametre olarak bir Task struct dilimi alan viewAllTasks adlı bir işlev oluşturun
  3. viewAllTasks işlevinin içinde dilim üzerinde yineleme yapın ve her görevi şu biçimde yazdırın:
    • Tamamlanan görevler için: "[x] [task_name]"
    • Tamamlanmayan görevler için: "[ ] [task_name]"
  4. Görev diliminizi oluşturmak için ikinci girdideki görev verilerini ayrıştırın:
    • Tek tek görev kayıtlarını elde etmek için girdiyi virgüllere göre bölün
    • Adı ve durumu ayırmak için her kaydı iki noktaya göre bölün
    • Durum dizesini bir boolean değere dönüştürün ("true", true olur; "false", false olur)
  5. Oluşturduğunuz dilimle viewAllTasks işlevinizi çağırın
  6. Tüm görevleri görüntüledikten sonra şu biçimde 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ıyı ve tamamlanma istatistiklerini içeren özeti görüntülemelidir. Bu alıştırma, dilim yinelemesini, if ifadeleriyle koşullu biçimlendirmeyi uygular ve kullanıcılara görev ilerlemelerini net bir şekilde görme olanağı 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

Kendi başına pratik yap: Online Go derleyicisi