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

إضافة مهمة

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

challenge icon

التحدي

سهل

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

ملاحظة مهمة: نظرًا لأن أسماء المهام قد تحتوي على مسافات (مثل "Buy groceries")، ستحتاج إلى استخدام bufio.Scanner لقراءة أسطر كاملة من المدخلات. تتوقف دالة fmt.Scanln عن القراءة عند أول مسافة، مما قد يؤدي إلى تجزئة أسماء المهام التي تحتوي على مسافات. استخدم bufio.NewScanner(os.Stdin) واستدعِ scanner.Scan() متبوعة بـ scanner.Text() لقراءة أسطر كاملة.

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

  • سلسلة نصية تمثل عدد المهام الموجودة (على سبيل المثال، "2")
  • سلسلة نصية تحتوي على أسماء المهام مفصولة بفاصلة (على سبيل المثال، "Buy groceries,Call dentist,Finish project")

مهمتك هي:

  1. تعريف نفس هيكل Task من التحدي السابق مع حقول Name (string) و Completed (bool)
  2. إنشاء دالة تسمى addTask تأخذ شريحة من هياكل Task واسم المهمة (string) كمعاملات
  3. يجب أن تعيد دالة addTask شريحة جديدة مع المهمة المضافة (يجب أن يكون حقل Completed للمهمة الجديدة مضبوطًا على false)
  4. استخدام bufio.Scanner لقراءة أسطر المدخلات بشكل صحيح للتعامل مع أسماء المهام التي تحتوي على مسافات
  5. إنشاء شريحة أولية من المهام بناءً على عدد المهام الموجودة المحدد في المدخل الأول:
    • إذا كان العدد "0"، ابدأ بشريحة فارغة
    • إذا كان العدد أكبر من "0"، فقم بإنشاء هذا العدد من المهام النائبة بأسماء مثل "Existing Task 1"، و "Existing Task 2"، وما إلى ذلك، مع وضع علامة غير مكتملة عليها جميعًا
  6. تحليل أسماء المهام المفصولة بفاصلة من المدخل الثاني
  7. استخدام دالة addTask الخاصة بك لإضافة كل مهمة جديدة إلى الشريحة
  8. طباعة كل مهمة في الشريحة النهائية بالتنسيق: "Task: [name], Completed: [true/false]"
  9. طباعة العدد الإجمالي للمهام بالتنسيق: "Total tasks: [count]"

على سبيل المثال، إذا كان لديك مهمة واحدة موجودة وتريد إضافة "Buy groceries,Call dentist"، فيجب أن يظهر مخرجك المهمة الموجودة أولاً، تليها المهمتان الجديدتان، وأخيرًا العدد الإجمالي. يختبر هذا التحدي مهارات التعامل مع الشرائح (slices) باستخدام دالة append ويوضح كيفية بناء وظائف تعمل على توسيع هياكل البيانات الخاصة بك.

جرّب بنفسك

package main

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

type Task struct {
	Name      string
	Completed bool
}

// TODO: قم بإنشاء دالة addTask هنا

func main() {
	// إنشاء ماسح ضوئي (scanner) لقراءة أسطر الإدخال
	scanner := bufio.NewScanner(os.Stdin)
	
	// قراءة عدد المهام الموجودة
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// قراءة أسماء المهام
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: أكمل التنفيذ
	// 1. تحويل existingTasksStr إلى عدد صحيح
	// 2. إنشاء شريحة (slice) أولية بالمهام الموجودة
	// 3. تحليل taskNamesStr وإضافة مهام جديدة
	// 4. طباعة جميع المهام والعدد الإجمالي
}

جميع دروس Logic & Flow