Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

عرض جميع المهام

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 22 من 68.

challenge icon

التحدي

سهل

استمراراً في نظام إدارة المهام الخاص بك، ستقوم الآن بتنفيذ الوظيفة لعرض جميع المهام بتنسيق سهل الاستخدام. يركز هذا التحدي على التكرار (iterating) عبر مجموعة المهام الخاصة بك وتقديم كل مهمة مع حالة اكتمالها باستخدام مؤشرات بصرية واضحة.

ستتلقى مدخلين:

  • سلسلة نصية تمثل عدد المهام (مثلاً، "4")
  • سلسلة نصية تحتوي على بيانات المهام بالتنسيق التالي: "name1:status1,name2:status2,name3:status3" حيث تكون الحالة إما "true" أو "false" (مثلاً، "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

مهمتك هي:

  1. تعريف نفس هيكل Task من التحديات السابقة مع حقول Name (string) و Completed (bool)
  2. إنشاء دالة تسمى viewAllTasks تأخذ شريحة (slice) من هياكل Task كمعامل (parameter)
  3. داخل دالة viewAllTasks، قم بالتكرار عبر الشريحة واطبع كل مهمة بالتنسيق التالي:
    • للمهام المكتملة: "[x] [task_name]"
    • للمهام غير المكتملة: "[ ] [task_name]"
  4. تحليل بيانات المهام من المدخل الثاني لإنشاء شريحة المهام الخاصة بك:
    • تقسيم المدخل بواسطة الفواصل للحصول على إدخالات المهام الفردية
    • لكل إدخال، قم بالتقسيم بواسطة النقطتين الرأسيتين لفصل الاسم والحالة
    • تحويل سلسلة الحالة النصية إلى قيمة منطقية (boolean) ("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"، يجب أن يظهر مخرجك كل مهمة مع مربعات الاختيار المناسبة ثم يعرض الملخص مع العدد الإجمالي وإحصائيات الاكتمال. يتدرب هذا التحدي على التكرار عبر الشرائح (slice iteration)، والتنسيق الشرطي باستخدام جمل 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 مع الشريحة التي تم إنشاؤها

	// TODO: حساب وطباعة الملخص
	// التنسيق: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

جميع دروس Logic & Flow