Menu
Coddy logo textTech

צפייה בכל המשימות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 22 מתוך 68.

challenge icon

אתגר

קל

בהמשך למערכת ניהול המשימות שלך, עכשיו תממש את הפונקציונליות להצגת כל המשימות בפורמט ידידותי למשתמש. האתגר הזה מתמקד במעבר על אוסף המשימות שלך ובהצגת כל משימה עם מצב ההשלמה שלה, תוך שימוש בסימונים חזותיים ברורים.

תקבל שתי כניסות:

  • מחרוזת שמייצגת את מספר המשימות (למשל, "4")
  • מחרוזת שמכילה נתוני משימות בפורמט: "name1:status1,name2:status2,name3:status3" כאשר המצב הוא "true" או "false" (למשל, "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

המשימה שלך היא:

  1. להגדיר את אותו מבנה Task מהאתגרים הקודמים, עם השדות Name (מחרוזת) ו-Completed (בוליאני)
  2. ליצור פונקציה בשם viewAllTasks שמקבלת פרוסה של מבני Task כפרמטר
  3. בתוך הפונקציה viewAllTasks, לעבור על הפרוסה ולהדפיס כל משימה בפורמט הבא:
    • למשימות שהושלמו: "[x] [task_name]"
    • למשימות שלא הושלמו: "[ ] [task_name]"
  4. לנתח את נתוני המשימות מהכניסה השנייה כדי ליצור את פרוסת המשימות:
    • לפצל את הקלט לפי פסיקים כדי לקבל את רשומות המשימות הבודדות
    • עבור כל רשומה, לפצל לפי נקודתיים כדי להפריד בין השם למצב
    • להמיר את מחרוזת המצב לערך בוליאני ("true" הופך ל-true, "false" הופך ל-false)
  5. לקרוא לפונקציה viewAllTasks עם הפרוסה שיצרת
  6. לאחר הצגת כל המשימות, להדפיס סיכום בפורמט: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

לדוגמה, אם יש לך משימות "Buy groceries:false,Call dentist:true,Finish project:false", הפלט שלך אמור להציג כל משימה עם תיבות סימון מתאימות, ואז להציג את הסיכום עם המספר הכולל ונתוני ההשלמה. האתגר הזה מתרגל מעבר על פרוסה, עיצוב מותנה באמצעות משפטי if, ומאפשר למשתמשים לקבל תמונה ברורה של התקדמות המשימות שלהם.

נסו בעצמכם

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO: לממש את הפונקציה להצגת כל המשימות
	// עבור משימות שהושלמו: "[x] [task_name]"
	// עבור משימות שלא הושלמו: "[ ] [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: לנתח את נתוני המשימות מהמחרוזת taskData
	// לפצל לפי פסיקים כדי לקבל רשומות נפרדות של משימות
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// לכל רשומה, לפצל לפי נקודתיים כדי להפריד בין השם למצב
	// להמיר את מחרוזת המצב לערך בוליאני וליצור מבני Task

	// TODO: לקרוא לפונקציה viewAllTasks עם ה-slice שנוצר

	// TODO: לחשב ולהדפיס סיכום
	// פורמט: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Go אונליין